Read and write from file in C langage -


please, 1 can explain me why program not work ? i'm trying read , write file using r+. file test.txt exists , writing executed correctly. however, reading not work.

int main() {      file* fichier = null;     int age, taille_max=10;     char chaine[taille_max];      fichier = fopen("test.txt", "r+");     if (fichier != null)     {          printf("give age ? ");         scanf("%d", &age);         fprintf(fichier, "hello have %d year old", age);          while (fgets(chaine, taille_max, fichier) != null)         {             printf("%s", chaine); //does not print         }fclose(fichier);     }      return 0; } 

by not work mean not display thing ! if file contains sentence have ... year old. there no error. program not print content of file

you writing , reading file @ same time, not practice, reason code not work because of buffering. fprintf(fichier, "hello have %d year old", age); not happening until fclose(fichier) statement happening. added 2 statements code, see below. once fprintf file pointer fichier not @ end of file wrong place next thing try read age number wrote, have move file pointer fichier somehow - used rewind work if test.txt newly created file. otherwise need method of moving file pointer fichier backwards enough read wrote.

int main() {  file* fichier = null; int age, taille_max=10; char chaine[taille_max];  fichier = fopen("test.txt", "r+"); if (fichier != null) {      printf("give age ? ");     scanf("%d", &age);     fprintf(fichier, "hello have %d year old", age);      fflush( fichier );  /* force  write file */     rewind( fichier );  /* rewind file pointer beginning */      while (fgets(chaine, taille_max, fichier) != null)     {         printf("%s", chaine); //does not print     } } fclose(fichier); return 0; } 

in original code, statement

while (fgets(chaine, taille_max, fichier) != null) 

fails read , returns null, printf("%s", chaine); not happen. happening because of output buffering , fprintf() statement not happening when think should.

this output buffering normal , if want printf happen @ exact moment need use fflush() read here learn more: why printf not flush after call unless newline in format string?


Comments

Popular posts from this blog

Retrieving ETA (estimated time of arrival) with Google Distance Matrix API and public transit as transport mode -

javascript - Confirm a form & display message if form is valid with JQuery -

ionic framework - Meteor - Error: Failed to execute 'insertBefore' on 'Node' -