使用字符数组调用 scanf_s()

Calling scanf_s() with array of chars

本文关键字:scanf 调用 字符 数组      更新时间:2023-10-16

我尝试了这段代码,但它不起作用。

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

当我执行它时,它显示:

word1 = 

如果您仔细阅读 scanf_s() 的 MSDN 文档,您会注意到您必须提供字符串缓冲区的长度:

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

按如下方式调整您的scanf_s()通话:

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

这应该行得通。

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