C语言 为什么尝试扫描在名称产生分割错误



我是编程新手。我输入了这个简单的代码,我一直得到这个错误信息。有人知道编译器停止工作的原因吗?我已经检查了编译器设置,并单击自动检测。但它仍然不起作用。

任何建议都是赞赏的。顺便说一句,我是编程新手,所以如果解释一些事情,请将其分解。

#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];

相关内容

  • 没有找到相关文章

最新更新