Reading character by character from a file in C -


i wrote following program :

int main(){     char str[500],c;     file *f1=fopen("input.txt","r");     file *f2=fopen("output.txt","w");       while(c=fgetc(f1)!=eof)     fputc(toupper(c),f2);       fclose(f1); } 

i not getting desired result though. rewrote code using while loop.

int main(){   char str[500];   file *f1=fopen("input.txt","r");   file *f2=fopen("output.txt","w");   char c;      {     fputc(toupper(c),f2);     c=fgetc(f1);   }while(c!=eof); } 

i figured out reason first code fails because in while loop while(c=fgetc(f1)!=eof), cannot guarantee left part of != evaluated first , hence results not proper. correct explanation?

yes correct; in first code while loop written wrongly:

while(c=fgetc(f1)!=eof) 

should be:

while((c=fgetc(f1))!=eof) //    ^           ^   added parenthesis 

because precedence of operator != greater = operator in conditional expression c=fgetc(f1)!=eof, first returned result of comparing value fgetc() eof (either 0 or 1) , assigned c. (that means c=fgetc(f1)!=eof expression equivalent c=(fgetc(f1)!=eof) , not need.)

you need () overwrite precedence suggested.

but have second thing improve c variable must int (not char) in order hold eof-value.

a read: definition of eof , how use effectively


Comments

Popular posts from this blog

php - Calling a template part from a post -

Firefox SVG shape not printing when it has stroke -

How to mention the localhost in android -