Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Last modification | View Log | Download | RSS feed

  1. /* ungetc example */
  2. #include <stdio.h>
  3.  
  4. void trace_file(FILE* f, char* cmt);
  5.  
  6. int main ()
  7. {
  8.   FILE * pFile;
  9.   int c;
  10.   char buffer [256];
  11.  
  12.   pFile = fopen ("myfile.txt","rt");
  13.   if (pFile==NULL) perror ("Error opening file");
  14.   else while (!feof (pFile)) {
  15.         trace_file(pFile, "1");
  16.  
  17.     c=getc (pFile);
  18.  
  19.         trace_file(pFile, "before ungetc");    
  20.  
  21.     if (c == EOF) break;
  22.     if (c == '#') ungetc ('@',pFile);
  23.     else ungetc (c,pFile);
  24.        
  25.         trace_file(pFile, "after");    
  26.  
  27.     if (fgets (buffer,255,pFile) != NULL)
  28.       puts (buffer);
  29.     else break;
  30.   }
  31.   return 0;
  32. }
  33.  
  34. void trace_file(FILE* f, char* cmt)
  35. {
  36.         printf("%s[%s]\n", cmt, f->buffer);
  37.         printf("mode=%0X, filesize=%d, filepos=%d\n", f->mode, f->filesize, f->filepos);
  38.         printf("ungetc=%d, buffer_start=%d, buffer_end=%d\n", f->ungetc_buf, f->buffer_start, f->buffer_end);  
  39. }