使用Visual Studio 2013在scanf_s和printf中出现C计算器错误

时间:2014-09-16 01:53:29

标签: c visual-studio-2012 runtime-error calc

我正在尝试制作的计算器应用程序在运行时无法正常工作。它提出了一个奇怪的消息框(见下文)。

error

#include <stdio.h>

int main()
{
int Pre;
float v1;
float v2;
char op;

printf("Enter precision: ");
scanf_s("%f", &Pre);

if (Pre < 0)
{
    printf("Error: negative precision\n");
    return 0;
}

printf("Enter expression: ");
scanf_s("%f %c %f", &v1, &op, &v2);

if (op == '+')
{
    printf("%f %c %f\n", v1, op, v2);
    return 0;
}


return 0;
}

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

使用scanf_s将数据读入char *wchar_t *时,必须指定接受输入的缓冲区大小。

scanf_s("%f %c %f", &v1, &op, 1, &v2);

来源:MSDN on scanf_s

(注意:scanf_s是C.11附件K.3.5.3.4中描述的标准C库的可选扩展。)


Matt指出"%f"&Pre的格式说明符不正确,因为Preint"%f"表示参数将是指向float的指针。使用"%d"表示参数是指向int的指针。