2016-11-30 47 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);