Page 166 - C-Language
P. 166

/* write a 16-bit little endian integer */
         int fput16le(int x, FILE *fp)
         {
             unsigned int rep = x;
             int e1, e2;

             e1 = fputc(rep & 0xFF, fp);
             e2 = fputc((rep >> 8) & 0xFF, fp);

             if(e1 == EOF || e2 == EOF)
                 return EOF;
             return 0;
         }


        The other functions follow the same pattern with minor modifications for size and byte order.


        fscanf()


        Let's say we have a text file and we want to read all words in that file, in order to do some
        requirements.


        file.txt:


         This is just
         a test file
         to be used by fscanf()


        This is the main function:


         #include <stdlib.h>
         #include <stdio.h>

         void printAllWords(FILE *);

         int main(void)
         {
           FILE *fp;

           if ((fp = fopen("file.txt", "r")) == NULL) {
               perror("Error opening file");
               exit(EXIT_FAILURE);
           }

           printAllWords(fp);

           fclose(fp);

           return EXIT_SUCCESS;
         }

         void printAllWords(FILE * fp)
         {
             char tmp[20];
             int i = 1;

             while (fscanf(fp, "%19s", tmp) != EOF) {
                 printf("Word %d: %s\n", i, tmp);



        https://riptutorial.com/                                                                             142
   161   162   163   164   165   166   167   168   169   170   171