【发布时间】:2017-06-14 13:08:01
【问题描述】:
我正在尝试编写这个简单的程序,它在一个 scanf 函数中读取多个变量,但输入输入后抛出异常?
编辑:我最初使用 scanf,但它会导致错误提示它可能不安全。
抛出异常:
在 Program.exe 中的 0x52DAB87C (ucrtbased.dll) 处引发异常:0xC0000005:访问冲突写入位置 0x00D00000
#include <stdio.h>
#include <stdlib.h>
void main()
{
char name[20];
int age;
char gender;
float income;
printf("Enter <name> <age> <gender> <income> :");
scanf_s("%s %d %c %f", &name, &age, &gender, &income);
printf("Name : %s", name);
printf("Age : %d", age);
printf("Gender : %c", gender);
printf("Income : %.2f", income);
system("pause");
}
【问题讨论】:
-
为什么要用C++标签?
-
不确定它是否修复:
&name=>name -
scanf_s("%s %d %c %f", &name, &age, &gender, &income);-->scanf_s("%19s %d %c %f", name, 20, &age, &gender, 1, &income); -
我感觉到另一个(几乎)正确的 scanf 代码被用户破解,以响应虚假的编译器消息,建议将
scanf更改为scanf_s -
提示:文本的屏幕截图往往会吸引反对票。文本更易于搜索、剪切和粘贴。
标签: c