【发布时间】:2014-09-20 06:03:18
【问题描述】:
简而言之,我的代码是,
#include <stdio.h>
int main()
{
int n;
scanf("%d", &n);
while(n != 0)
{
scanf("%d", &n);
printf("%d\n", n);
}
return 0;
}
它是为integer 输入而编写的。但是,如果我改为输入 character(尽管 n 被取消为 integer),则循环将变为无限并打印最后一个 integer 输入值。如果我一开始输入character,它似乎会打印一个内存地址。我的问题是,如果我输入 character 而不是 integer,会发生什么?
【问题讨论】:
-
@ricky2527 你为什么这么认为?它有一个断裂条件。
-
输入字符时程序好像自动终止了,你确定代码是对的吗?
-
@salmanwahed,我建议您检查
scanf()的返回码以进行更多控制:成功时,该函数返回参数列表中成功填充的项目数。由于匹配失败、读取错误或到达文件结尾,此计数可能与预期的项目数匹配或更少(甚至为零)。 -
我希望这个引用
scanf()fails why?,因为这个问题的答案包括明确地测试来自fscanf()的返回值,而当前的副本并没有真正做到这一点。