2

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

这是代码:

#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

我想就是这样,我提前感谢您的帮助。

4

3 回答 3

2

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

于 2011-04-03T05:40:41.050 回答
1

内部循环不会在 EOF 处停止。

您从 getchar (EOF == -1)收到错误,因为您的文件已完成。这就是它无休止地打印的内容。

于 2011-04-03T05:40:42.490 回答
1

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

我不知道您的预期结果是什么,所以我无法帮助您。

于 2011-04-03T05:41:56.387 回答