2016-11-30 4 views
0

私はC言語を学習していますが、最近私はYouTubeからいくつかのチュートリアルを試していましたが、このコードを実行していましたが、 https://youtu.be/7F-Q2oVBYKk?list=PL6gx4Cwl9DGAKIXv8Yr6nhGJ9VlcjyymqC - mac端末でトラップ6エラーを中止しました

#include <stdio.h> 
#include <stdlib.h> 
#include <string.h> 


int main() 
{ 
    char name[15] = "John Snow"; 
    printf("My name is %s\n", name); 

    name[2] = 'z';     
    printf("My name is %s\n", name); 

    char food[] ="pizza"; 
    printf("The best food is %s \n", food); 

    strcpy(food, "bacon"); 
    printf("The best food is %s \n", food); 

    return 0; 
} 
+0

あなたは、デバッグの貧しいマンの道を行い、割り当て、一度に1行を印刷し、エラーを与える行表示されるはずです。 –

+4

問題ないと思われます。 – BLUEPIXY

+0

私はコンパイル、リンク、ubuntu lilnux 16.04の変更なしでコードを実行し、それは完全に機能しました。 – user3629249

答えて

1

エラーは、あなたが所有していないメモリへの書き込みをしている意味:私はこのチュートリアルを以下ました

を:それはターミナル上で、「6トラップを中止」エラーが発生します。あなたが指定したものより長い文字列( 'ピザ')をコピーしようとすると、おそらく起こります。この場合、文字列定数に割り当てられたメモリ位置に文字列をコピーしている可能性があります。

は、代わりにこれを試してください: -

char *food = malloc(sizeof(char)*6); 
strcpy(food, "pizza"); 
printf("The best food is %s \n", food); 

strcpy(food, "bacon");` 
printf("The best food is %s \n", food); 
関連する問題