我一直在努力寻找答案,但我无法找到答案。
我想插入一个读取字符串的部分编程,例如" Hello"和商店,并可以在我想要的时候显示它,以便printf("%s", blah);
生成Hello
。
这是代码部分给我带来麻烦
char name[64];
scanf_s("%s", name);
printf("Your name is %s", name);
我知道printf
不是问题;在提示输入某些内容后程序崩溃。请帮帮忙?
答案 0 :(得分:4)
根据ISO / IEC 9899:2011标准附件K.3.5.3.2中fscanf_s()
的规范:
fscanf_s
功能相当于fscanf
,但c
,s
和[
转换除外 说明符适用于一对参数(除非赋值抑制由a表示*
)。这些参数中的第一个与fscanf
相同。那个论点是 紧跟在参数列表中的第二个参数,它具有类型rsize_t
并给出第一个参数指向的数组中的元素数 这对。如果第一个参数指向标量对象,则认为它是一个数组 一个元素。
和
scanf_s
函数相当于fscanf_s
,参数为stdin
插入到scanf_s
的参数之前。
MSDN说类似的事情(scanf_s()
和fscanf_s()
)。
您的代码未提供length参数,因此使用了其他一些数字。它并不确定它找到了什么值,因此您从代码中获得了古怪的行为。你需要更像这样的东西,换行有助于确保实际看到输出。
char name[64];
if (scanf_s("%s", name, sizeof(name)) == 1)
printf("Your name is %s\n", name);
答案 1 :(得分:-1)
#include<stdio.h>
int main()
{
char name[64];
printf("Enter your name: ");
scanf("%s", name);
printf("Your name is %s\n", name);
return 0;
}
答案 2 :(得分:-1)
#include<stdio.h>
int main()
{
char name[64];
printf("Enter your name: ");
gets(name);
printf("Your name is %s\n", name);
return 0;
}
答案 3 :(得分:-2)
你应该这样做:scanf ("%63s", name);