2016-11-30 70 views
0

我在學習C,最近我在嘗試一些來自YouTube的教程,並且我正在運行此代碼,但它不起作用我不知道爲什麼......當我運行它的終端,提供了一個錯誤「中止陷阱:6」在C-mac終端中取消陷阱6錯誤

我下面這個教程:https://youtu.be/7F-Q2oVBYKk?list=PL6gx4Cwl9DGAKIXv8Yr6nhGJ9Vlcjyymq

#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

你應該做的調試窮男人的方式和分配,並在每次打印一條線,看其行給出了錯誤。 –

+4

似乎沒有問題。 – BLUEPIXY

+0

我編譯,鏈接,運行的代碼沒有在Ubuntu lilnux 16.04上的變化,它的工作完美。 – user3629249

回答

1

的錯誤意味着你寫你沒有自己的記憶。如果您嘗試複製比您指定的食物長的字符串(「披薩」),可能會發生。在這種情況下,它可能是因爲您正在將字符串複製到分配給字符串常量的內存位置。

試試這個: -

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);