我一直在寻找自己的答案,但找不到。
我想插入一部分程序,该程序读取“ Hello”之类的字符串并存储并在需要时显示它,以便printf("%s", blah);
生成Hello
。
这是给我麻烦的代码部分
char name[64];
scanf_s("%s", name);
printf("Your name is %s", name);
我知道
printf
不是问题;在提示后输入内容后,程序崩溃。请帮忙?
最佳答案
根据ISO / IEC 9899:2011标准的附件K.3.5.3.2中的fscanf_s()
规范:
fscanf_s
功能等效于fscanf
,但c
,s
和[
转换除外
说明符适用于一对参数(除非分配抑制用
*
)。这些参数的第一个与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);
关于c - 使用C scanf_s的字符串输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56074641/