c - 如何修复c中的scanf_s函数?
问题描述
我正在尝试制作一个“tik-tak-toe”程序,并试图让它重复,所以我使用了一个 while 循环。我要求用户输入 1 表示是,输入 2 表示否。之后我有一个 scanf_s 声明。出于某种原因,当我输入 yes 并按 enter 时,visual studios 2015 会给我一个警告:
“tick-tack-toe.exe 中 0x5D14B5F2 (ucrtbased.dll) 处未处理的异常:0xC0000005:访问冲突写入位置 0x00000001。” 当我按 2 表示否时,此警告不会出现。
我使用调试器查找出了什么问题,我发现它是 scanf_s 语句。我试图让它只是一个常规的 scanf 语句但是当我运行代码时说代码失败并且错误是,
“‘scanf’:此函数或变量可能不安全。请考虑改用 scanf_s。要禁用弃用,请使用 _CRT_SECURE_NO_WARNINGS。有关详细信息,请参阅在线帮助。” 我已经浏览了整个互联网并尝试了我发现的所有内容,但没有任何效果。:(
int repeat = 1;
while(repeat == 1){
printf("do you want to play again \n 1.yes \n 2.no \n");
scanf_s("%d", repeat);
}
我希望当我按 1 时我的代码会回到开头,但它会出错。
解决方案
请仔细阅读这些函数的原型,具体看如何传递参数:
提示:您以错误的方式传递“重复”。
另请注意:
“0x5D14B5F2 处未处理的异常
这不是警告,更像是程序崩溃/致命错误。
推荐阅读
- python - 在groupby之后获取除上一行之外的下一行
- excel - 水晶报表显示数据
- node.js - 机器人配置中的消息传递端点 gulp serve VS gulp ngrok-serve
- unity3d - 将 MRTK AR 项目导入 IOS 设备时出现问题
- sql - 何编写 SQL 选择语句以根据值可以为空的某些列(例如,5 列)获取数据?
- java - 某些对象无法序列化
- c# - 在 LINQ 中过滤两个数组
- c++ - 在 C++ 中创建新的数据类型
- javascript - 如何将 HTML 元素转换为实际可读的 html?
- php - 如何使用时区偏移(-11:00)将 UTC 时间转换为其他时区