使用字符数组调用 scanf_s()
Calling scanf_s() with array of chars
我尝试了这段代码,但它不起作用。
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>
。
相关文章:
- 什么时候调用组成单元对象的析构函数
- 对RValue对象调用的LValue ref限定成员函数
- 为什么使用 "this" 指针调用派生成员函数?
- 函数调用中参数的顺序重要吗
- OpenGL - 在抛出"__gnu_cxx::recursive_init_error"实例后终止调用?
- 基于另一个成员参数将函数调用从类传递给它的一个成员
- 为什么我的C#代码在调用回C++COM直到Task时会暂停.等待/线程.加入
- 在c++类上调用void函数
- 为什么 std::unique 不调用 std::sort?
- 调用专用模板时出错"no matching function for call to [...]"
- 选择要调用的构造函数
- C++为什么尽管我调用了void函数,它却不起作用
- 构造函数正在调用一个使用当前类类型的函数
- 变量没有改变?通过向量的函数调用
- 没有为自己的结构调用列表推回方法
- 调用'begin(int [n])'没有匹配函数
- 什么时候调用析构函数
- 如何用参数值调用函数(仅在运行时已知)
- 当使用 stdlib.h 中的 system() 从程序内部运行程序时,如何模拟键入以馈送子程序的 scanf 调用?
- 变量值在没有scanf调用的情况下正在更改