C++中scanf报错的原因及対応方法总结和解决技巧大全

频道:问答 日期: 浏览:2

以下是C++中scanf报错的常见原因及对应解决方法:

SDL检查不通过

报错信息通常为“this function may be unsafe. Consider using scanf_s instead.”。原因是默认开启了SDL检查,系统认为scanf函数不安全。

解决方法:把SDL检查关闭,记得操作完成后点击“应用”和“确认”。

C++中scanf报错的原因及対応方法总结和解决技巧大全

回车键被记录到输入流

表现为程序还没来得及接收第二个字符就运行结束。错误原因是输入第一个字符到变量后按下回车键,回车键被输入流记录并直接放到后续变量中。

解决方法:在输入第一个字符后,立即使用rewind(stdin)清空输入流。

系统认为函数不安全

原因是系统认为C本身的某些代码不安全,scanf就属于这类被认为不安全的函数。

解决方法有:

C++中scanf报错的原因及対応方法总结和解决技巧大全

方法一:添加宏定义

在代码最上边添加一行“define _CRT_SECURE_NO_WARNINGS 1”。为避免每次手动添加,可将该代码默认到头部,操作如下:直接双击“我的电脑/此电脑”,在右上方搜索框输入“newc++file”,找到文件后复制一份到桌面,右键选择打开方式为记事本,将代码复制进去并保存,然后拖动到原来的路径替换原文件。

方法二:修改项目属性

添加“/D _CRT_SECURE_NO_WARNINGS”,从而直接使用这些“不安全”的函数。

方法三:使用更安全的函数

采用C11标准中的“更安全”函数,例如将scanf替换为scanf_s。