Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/463.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 为什么我的程序会崩溃?_C_Crash - Fatal编程技术网

C 为什么我的程序会崩溃?

C 为什么我的程序会崩溃?,c,crash,C,Crash,我对C很陌生。我正在尝试做一些小东西,但我无法克服这个问题 为了缩小问题范围,我从程序副本中删除了很多内容。 我想知道为什么它不断崩溃,并感谢提示。 谢谢 #包括 main() { 字符*名称; printf(“\n命名您的宠物。\n”); scanf(“%s”,名称); 饥饿指数=5; 整数时间=0; int循环=0; 整日=1; 幸福指数=40; 健康指数=100; int=0; int选项; while(循环=90){ printf(“\n%s正在努力保持清醒”,name); } 否则(疲

我对C很陌生。我正在尝试做一些小东西,但我无法克服这个问题

为了缩小问题范围,我从程序副本中删除了很多内容。 我想知道为什么它不断崩溃,并感谢提示。 谢谢

#包括
main()
{
字符*名称;
printf(“\n命名您的宠物。\n”);
scanf(“%s”,名称);
饥饿指数=5;
整数时间=0;
int循环=0;
整日=1;
幸福指数=40;
健康指数=100;
int=0;
int选项;
while(循环<1){
printf(“\n\nDay%i\n时间=%i\n\n”,天,时间);
printf(“1-检查\n2-互动\n3-外出\n4-库存\n\n”);
scanf(“\n%i,&选项);
如果(选项==1){
如果(疲劳>=90){
printf(“\n%s正在努力保持清醒”,name);
}
否则(疲劳>=75){
printf(“\n%s看起来很累”,name);
}
否则(疲劳>=50){
printf(“\n%s开始有点昏昏欲睡”,name);
}

如果((疲劳它在此行崩溃:
scanf(“%s”,name);
,因为
name
未初始化,所以无法将其传递给
scanf


初始化
name
例如:
char*name=malloc(sizeof(char)*20);
,因此现在一个包含20个字符的字符串适合于
name

在您的代码中,
name
是一个
char*
的指针,这意味着它是指向
char
的指针。由于您没有为指针分配内存或提供有效地址,它指向某个未知位置。写入此位置是触发撞车

要解决它,要么改变

char *name;


或者使用
malloc
as动态分配内存。

你没有说它在哪里崩溃,但是你初始化了名称吗?你能描述一下具体的错误吗?知道它发生在哪里吗?仅仅发布代码是要求社区为你调试它-不会受到欢迎。如果你想学习C,我建议你也开始学习ng gdb/valgrind,还要看一看,非常感谢!我还没有完全理解字符串变量,但这就完成了!
char *name;
char name[100];