Search code examples
ceofgetchar

C getchar error


I wrote the most innocuous C program but I can't get the expected result. I hope you can tell where my error is.

This is the code:

#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;
}

and I'm using this file for input(command line redirection)

Name1 - Code1:
04/03/2011 4.5 5.6 9.8 145
04/03/2011 6.5 4.6 9.9 185
Name2 - Code2:
05/03/2011 4.5 5.6 9.8 135
05/03/2011 6.5 4.6 9.9 165

The error appears during while loop (I tried printf instead of putchar and it prints -1 endlessly and seems to never reach EOF)

I thinks that's all, I thank your help in advance.


Solution

  • You are getting one character, then going into the inner loop — which checks for ':', but not for EOF. So, unless the file ends with : (so that it will be seen by the outer loop), the inner loop will spin forever when it hits EOF.