访问冲突错误C.

Chi*_*bke 6 c

我是初学者,我正在学习C和C++.我试图在Visual Studio 2012 Express for Windows桌面中运行此代码.这是一个简单的计算器代码,我自己写的!但每当我运行它时,我都会收到此错误Unhandled exception at 0x519600B4 (msvcr110d.dll) in Calculator.exe: 0xC0000005: Access violation writing location 0x00000000.

请原谅我的任何错误(这是我的第一次).谢谢!

#include<stdio.h>
#include<conio.h>

main ()
{
    int num1, num2, result;
    char oper;
    scanf_s("%d%c%d", &num1, &oper, &num2);
    switch(oper)
    {
    case '+':
        result = num1 + num2;
        printf("%d", result);
        break;
    case '-':
        result = num1 - num2;
        printf("%d", result);
        break;
    case '*':
        result = num1 * num2;
        printf("%d", result);
        break;
    case '/':
        result = num1 / num2;
        printf("%d", result);
        break;
    default:
        printf("ERROR: INVALID OR UNRECOGNISED INPUT\n");
        break;
    }
    _getch();
}
Run Code Online (Sandbox Code Playgroud)

Dav*_*nan 15

使用时scanf_s,对于%c格式字符串,您必须指定要读取的字符数:

scanf_s("%d%c%d", &num1, &oper, 1, &num2);
Run Code Online (Sandbox Code Playgroud)

文档描述了该要求:

与scanf和wscanf不同,scanf_s和wscanf_s要求为所有包含在[]中的c,C,s,S或字符串控件集的输入参数指定缓冲区大小.字符的缓冲区大小作为附加参数传递,紧跟在指向缓冲区或变量的指针之后.