如何在C中修复scanf_s函数?

时间:2019-06-25 23:20:10

标签: c visual-studio-2015

我正在尝试制作“ tik-tak-toe”程序,并且试图使其重复执行,因此我使用了while循环。我要求用户输入1表示是,输入2表示否。之后,我有一个scanf_s语句。 出于某种原因,当我输入yes并按Enter时,Visual Studio 2015会向我发出警告:

  

“ tick-tack-toe.exe中0x5D14B5F2(ucrtbased.dll)处未处理的异常:0xC0000005:访问冲突写入位置0x00000001。   当我按2至No时,此警告不会出现。

我使用调试器查找出了什么问题,然后发现这是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时可以重新开始,但它会出错。

1 个答案:

答案 0 :(得分:0)

请仔细阅读这些函数的原型,特别是看如何传递参数:

https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/scanf-s-scanf-s-l-wscanf-s-wscanf-s-l?view=vs-2019

提示:您以错误的方式传递“重复”。

也请注意:

  

“ 0x5D14B5F2处未处理的异常

这不是警告,更像是程序崩溃/致命错误。