scanf_s error visual studio

scanf_s error visual studio

本文关键字:visual studio error scanf      更新时间:2023-10-16

int setN, setN2; char sign; scanf_s("do %d %c %d", &setN, &sign, &setN2);

例如,我输入"do 1+3",在vs fall中编程时出现错误"disc_II_2_1.exe中0x650de541处的未处理异常:0xC0000005:写入位置0xc96ff41e的访问冲突"。

下面的p.S.代码得到了相同的结果。

scanf_s("do %d %c %d", &setN, &sign, &setN2, 8);

我做错了什么?

来自MSDN:

与scanf和wscanf不同,scanf_s和wscanf_s需要缓冲区大小为c、c、s、s或字符串类型的所有输入参数指定包含在[]中的控制集。缓冲区大小(以字符为单位)为作为附加参数直接传递到缓冲区或变量。

以及后来的

在字符的情况下,单个字符可以读取如下:

char c;
scanf_s("%c", &c, 1);

在该参考文献的末尾,还有一些例子可以看到:

  • count参数应立即出现在相应的输入之后
  • count参数应该对应于期望的最大字符数(或者如上所述,对于单个字符,它应该是1)

因此,在您的特定情况下,您应该具有:

scanf_s("do %d %c %d", &setN, &sign, 1, &setN2);