1

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

错误

#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;
}

有任何想法吗?

4

1 回答 1

1

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

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

资料来源:scanf_s 上的 MSDN

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


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

于 2014-09-16T01:59:24.197 回答