scanf_s("%s", arr, 20);
scanf输入没有最后没有\0,gets 有\0,也就是你用gets输入的是一个字符串, 你用scanf输入进去,用一个printf输出的话,只知道首地址,不知道什么时候结束,你可以用for循环逐个打印数组,或者你直接定义arr为字符串数组,char arr[20]={"0"},这样初始化的时候就自带\0
不知道你这个问题是否已经解决, 如果还没有解决的话:关于使用vs2013或者其他版本的小伙伴在最开始总会出现一个问题
像下图
那就是例如scanf函数,编译器总会让你使用它自己规定的函数,说scanf函数不安全,但是呢,我们还是应该用类似于scanf这样的标准函数,而scanf-s只是这个编译器提供的函数,你无法保证在其他编译器还能使用,所以为了保证代码的可移植性和通用性,我们应该还是使用scanf函数。
接下来我将为读者提供以下三种方法来解决这个问题
一
复制这段错误原因,然后截取其中的 _CRT_SECURE_NO_WARNINGS ,然后在项目的开头用define定义。见下图
然后呢就可以啦!
二
第二种呢是一种一劳永逸的方法
我们先打开vs2013的文件所在地
然后点击Microsoft Visual Stdio 12.0,找到其下的VC文件夹 以及vcprojectitems文件夹
最终目的是为了找到图片中的newc++file.cpp,然后用记事本(打不开的话用notepad++)打开,并复制下之前的那段代码,保存,就可以了。
然后你每次新建项都会自动出现这个东西啦!
三
第三种的话,类似与第一种,但是代码不同,因为下面的error是C4996,所以我们也可以添加以下代码
#pragma warning(disable:4996)
同样也可以解决
好了,以上就是我为大家分享的三种方法,其中第二种比较好,一劳永逸的解决这个问题。希望我的文章能帮助到阅读的你。
向C语言进军冲冲冲!