我是编程新手。我输入了这个简单的代码,我一直得到这个错误信息。有人知道编译器停止工作的原因吗?我已经检查了编译器设置,并单击自动检测。但它仍然不起作用。
任何建议都是赞赏的。顺便说一句,我是编程新手,所以如果解释一些事情,请将其分解。
#include <sdtio.h>
#include <stdlib.h>
int main()
{
int name;
printf("What is your name?n");
scanf("%s", name);
printf("Your name is %s", name);
return 0;
}
这里的问题是,您为特定的格式说明符使用了错误的参数类型(或者我们可以说,反之亦然)。%s
需要指向char
数组的指针作为参数,而不是int
。它会调用未定义的行为。
您需要使用char
数组输入字符串,类似于
#define SIZE 32
char name[SIZE] = {0};
然后使用%s
格式说明符将是正确的。就像
scanf("%31s", name); //32-1, reserve one for null-terminator
%s
格式说明符期望一个指向char
的指针(它指向char
的数组),但是name
是一个int
。
将name
更改为字符数组
char name[100];