C语言char数组 字符串读入问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言char数组 字符串读入问题相关的知识,希望对你有一定的参考价值。

我在VS2013中写的C代码,创建了一个char类型的数组name用于存放姓名,为何使用scanf_s读入不了?
另外,当我直接给name赋值的话是正常的,而且以前用scanf_s读入其他类型的变量都是没问题的,具体请看图:

这样改:

#include "stdafx.h"
#include <stdlib.h>
#define PRAISE "What a super marvelous name!"
int main()

 char name[40];
 printf("What's your name?\\n");
 scanf_s("%40s", name, _countof(name));
 printf("Hello, %s, %s\\n", name, PRAISE);
 return 0;

 

输出效果:

追问

厉害啊!怎么解决的,能给我解释下原理吗?

追答

你直接看MSDN的文档吧,它上面有详细的说明的,下面是链接:
http://msdn.microsoft.com/query/dev12.query?appId=Dev12IDEF1&l=ZH-CN&k=k("stdio%2Fscanf_s");k(scanf_s);k(DevLang-C%2B%2B);k(TargetOS-Windows)&rd=true

你直接看备注部分就可以了

参考技术A 改成scanf不就行了!追问

是这个问题吗?因为一些安全性的问题VS不知道从哪个版本开始就强制编译器检查你是否用的是scanf_s()函数而不是scanf()函数,虽说好像可以在哪个设置里面关闭的。

以上是关于C语言char数组 字符串读入问题的主要内容,如果未能解决你的问题,请参考以下文章

读入字符并创建数组c ++

c++第二遍scanf读入问题

C语言 char型数组拼接问题

如何将文件的内容读入C中的字符串?

C 语言中怎么截取字符串的一部分

C语言简单的字符串、字符处理问题求助