使用字符数组调用scanf_s()

时间:2014-02-25 19:28:05

标签: c++ arrays scanf

我尝试了这段代码,但它没有用。

char word1[40];
printf("Enter text: \n");
scanf_s("%s", word1);
printf("word1 = %s", word1);

执行时,显示:

word1 = 

1 个答案:

答案 0 :(得分:1)

如果仔细阅读MSDN documentation of scanf_s(),您会发现必须提供字符串缓冲区的长度:

  

与scanf和wscanf不同,scanf_s和wscanf_s需要缓冲区大小   要为c,C,s,S或string类型的所有输入参数指定   包含在[]中的控件集。缓冲区大小以字符为单位   在指针指向后立即作为附加参数传递   缓冲区或变量。

按如下方式调整scanf_s()来电:

scanf_s("%s", word1, _countof(word1));

这应该有效。

(请注意,_countof()需要包含<stdlib.h>。)