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.
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
.