我是编程新手。我输入了这个简单的代码,但不断收到此错误消息。有谁知道编译器停止工作的原因吗?我已检查编译器设置并单击“自动检测”。但它仍然不起作用。
如有任何建议,我们将不胜感激。顺便说一句,我是编程新手,所以如果要解释一些东西,请将其分解。
#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
。它调用undefined behavior .
您需要使用char
数组来输入字符串,例如
#define SIZE 32
char name[SIZE] = {0};
然后使用%s
格式说明符将是正确的。类似的东西
scanf("%31s", name); //32-1, reserve one for null-terminator
会完成这项工作。
关于c - 为什么尝试扫描名称会产生段错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38152082/