当前位置: 技术问答>linux和unix
scanf无法终止,不停地从stin读入数据
来源: 互联网 发布时间:2015-07-21
本文导语: 我写了个小代码,如下: #include int main() { int d = 1; while (d 0) { scanf("%d", &d); printf("got value %dn", d); printf("%srn",...
我写了个小代码,如下:
#include
int main() {
int d = 1;
while (d 0) {
scanf("%d", &d);
printf("got value %dn", d);
printf("%srn", "hello,world");
}
return 0;
}
1.如果输入int值,一个循环,然后等待输入
2.如果输入char值,比如'd',不等待输入,不停的循环。
3.如果是有 char s[20];
while ...
scanf("%d", &d) 换成 scanf("%s", s);
d = atoi(s);
...
....
在执行若干步后,也会出现2的情况。
#include
int main() {
int d = 1;
while (d 0) {
scanf("%d", &d);
printf("got value %dn", d);
printf("%srn", "hello,world");
}
return 0;
}
1.如果输入int值,一个循环,然后等待输入
2.如果输入char值,比如'd',不等待输入,不停的循环。
3.如果是有 char s[20];
while ...
scanf("%d", &d) 换成 scanf("%s", s);
d = atoi(s);
...
....
在执行若干步后,也会出现2的情况。
|
参考:
#include
int main()
{
int d = 1;
while (d 0) {
if(scanf("%d", &d) != 1)
{
// mov io position
getc(stdin);
}
else
{
printf("got value %dn", d);
printf("%srn", "hello,world");
}
}
return 0;
}
#include
int main()
{
int d = 1;
while (d 0) {
if(scanf("%d", &d) != 1)
{
// mov io position
getc(stdin);
}
else
{
printf("got value %dn", d);
printf("%srn", "hello,world");
}
}
return 0;
}
|
字符在屏幕上一定是一个一个的,而数字可能有多位,
原因在于IO的缓冲机制,你可以参考下UNIX环境高级编程
原因在于IO的缓冲机制,你可以参考下UNIX环境高级编程
|
while (d 0) {
|
The loop shall execute whether what you input, for d 0 is always true.
d 0
d 0