2011-04-03 65 views
2

我写了最无害的C程序,但是我无法得到预期的结果。我希望你能说出我的错误在哪里。C getchar错误

这是代码:

#include <stdio.h> 
#include <stdlib.h> 

int main(int argc, char** argv) { 
    int c, var4; 
    double var1,var2,var3; 

    while ((c = getchar()) != EOF) { 

     while (c != ':') { 
      putchar(c); 
      c = getchar(); 
     } 
     //scanf("%d/%d/%d",&mm,&dd,&yy); 
     //scanf("%lf%lf%lf%d",&var1,&var2,&var3,&var4); 
    } 
    return 0; 
} 

和我使用此文件中的输入(命令行重定向)

名1 - 代码1:
04/03/2011 4.5 5.6 9.8 145
04/03/2011 6.5 4.6 9.9 185
名称2 - 代码2:
05/03/2011 4.5 5.6 9.8 135
05/03/2011 6.5 4.6 9.9 165

期间while环路出现错误(我试过printf,而不是putchar和它打印-1不休,似乎永远无法到达EOF

我认为这是所有,我先谢谢你的帮助。

+0

你得到了什么错误?我假设你期待看到'Name1 - Code1'?你尝试过'char c;'? – 2011-04-03 05:42:27

+0

感谢大家和对不起,这是一个愚蠢的问题 – 2011-04-03 06:17:49

回答

2

你会得到一个字符,然后进入内部循环 - 检查':',但不是EOF。所以,除非文件以:结尾(以便它可以被外部循环看到),否则内部循环将在它到达EOF时永远旋转。

1

内循环不会停在EOF处。

您收到来自getchar (EOF == -1)的错误,因为该文件已完成。这就是无尽的打印。

1

您不在内部getchar循环内检查EOF,因此允许它连续读取EOF(-1)并将其打印出来。

我不知道你的预期结果是什么,所以我不能帮你。