C语言scanf()常见报错问题
Posted 码码咪呀
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言scanf()常见报错问题相关的知识,希望对你有一定的参考价值。
1.提示 scanf 未申明
问题症状:
我们一开始使用scanf() 都基本会遇到这样的报错
显示我们未申明 以下的错误
1."error C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, "_CRT_SECURE_NO_WARNINGS". See online help for details."
2.参见“scanf”的声明
解决方法:
一 、将 _CRT_SECURE_NO_WARNINGS 也就是它错误提示上面给出的代码定义在程序的最开始
即 #define _CRT_SECURE_NO_WARNINGS(直接复制)
也可以 #define _CRT_SECURE_NO_WARNINGS 1 后面 这个1可加可不加两种都可以
如图:
二 、将 scanf() 改写成 scanf_s()
这样也能有效的防止报错,但是在以后的不断学习中,你会知道 scanf() 才是规定的函数 scanf_s()虽然也能使用但是随着你代码量的增多 实现复杂的程序时 可能出现的程序Bug等一系列莫名其妙的问题,你根本不会注意到它,因此这里建议使用第一种方法,也就是在使用 scanf() 时 在程序开头给它定义代码的方式
2.缺少 ' ; ' 错误
问题症状:
如下以及下图中右下角方框显示-它会提示:
1.语法错误 : 缺少 “;” (在“类型”的前面)
2.“sum”: 未声明的标识符
这里你会反复检查代码哪里出现了问题 是否定义了sum 以及是否少了 ' ; ',结果都是百思不得其解。而这里问题 是由VS版本差异导致的这里VS系列推荐VS2013、VS2019,VS2013版本会出现这种问题,VS2019暂时不知,不过解决方法应该一致
解决方法:
如图中 可以将 int sum=b+c; 这个sum 定义放在 scanf() 的前面 如下图便能成功运行
看到这 细心的人会发现 这里我用的是scanf_s() 而不是 scanf() 而这就是我们刚刚讲的未申明scanf(),而为什么我都建议scanf()了还用scanf_s()的原因就是下面要说的快捷设置方法
3.运行后窗口一闪而过
同上面所说的一样 不同VS的版本都会有大大小小的问题,因此在学习过程中最好与所学视频资料等使用的版本一致,才能最大程度避免出现一些细小的问题
问题症状:
这里出现的问题就是 在你运行的时候程序如果没出错 应该弹出那个win32窗口程序面板 ,在这个界面可以看见你程序运行的结果过程,但是很多人都会出现一闪而过的情况 ,不会显示 就无法进行下一步的操作
解决办法:
1.在程序开头引入库函数 #include<windows.h> 平时生活中都会说有借有还, C语言也不例外 我们使用的库函数 printf 和微软规定的 系统函数system 等的时候 一旦使用都需要跟系统说一声 即引用 伴随C语言学习的始终
2.然后在main函数里面return 0;前面加上 system("pause");
这样程序就能停留在 你需要操作的 win32窗口程序面板
4.快捷设置以上内容
思考:
看到这想必你的问题已经得到了解决,但是心里应该没有太大的喜悦感。为什么呢?因为这些方法没有给你带来一劳永逸的快感,你可能也意识到既然这样那我岂不是每次都要设置一次吗。
因此这里带来只需设置一次的方法,方法较为简单。
解决方法:
1.打开你所装版本的VS安装路径--可以找到软件图标右键打开文件夹所在位置
2.跟着图示步骤找到newc++file.cpp 你也可以直接在你电脑搜索引擎里面搜这个文件名
3.管理员身份运行 在里面输入你的内容 即上面讲的 定义 和 窗口闪退 然后保存,新建一个项目你就会发现上面讲的需要你每次写的东西一新建好项目后就有了
很多人不知道怎么管理员运行,因为右键后没这选项,所以可以将文件拖动到桌面-然后右键编辑然后拖回刚才那个文件夹就行了
也可以下载一个 Notepad++ 这个软件 就在找到的路径下打开方式选Notepad++编辑newc++file.cpp 也可
格式最好在VS里面编辑好然后复制在里面,拖回后可以试着新建项目看看有没有效果
如下图所示,我就将上面讲的需要每次创建基本都需要的繁琐不断重复的东西给放在newc++file.cpp 文件夹里面了 这样每次新建项目就是图示的样子
最后需要提醒的是 这里的 #define _CRT_SECURE_NO_WARNINGS、 scanf_s()、以及窗口闪退问题 在正规的刷题网站 牛客等 都不会存在 无需进行这些操作,而至于定义变量的位置自己尝试下 毕竟刷题讲究代码的行数内容,你可以看怎样运行更便捷 是定义在scanf()前还是后面
完结撒花!!
怎么样,问题解决的感觉是不是很爽呢
其实这些问题很简单,一会儿就能解决 ,但是写出来却耗费了好多的时间,果然教和学是两码子事,希望这些能帮助到你们。难免会有不足之处,如果有错误,请联系我改正,谢谢啦!点赞关注啦,求求了!!!
以上是关于C语言scanf()常见报错问题的主要内容,如果未能解决你的问题,请参考以下文章
vc/vs常见报错:/****error C2106: '=' : left operand must be l-value****/