home *** CD-ROM | disk | FTP | other *** search
/ DP Tool Club 17 / CD_ASCQ_17_101194.iso / dos / prg / alb_c10 / chap_15 / ch15_07.c < prev    next >
Encoding:
C/C++ Source or Header  |  1994-09-16  |  1.4 KB  |  56 lines

  1. /*********************************************************************
  2. *  CH15_07.C              Lire un fichier texte comme une seule chaεne *
  3. *********************************************************************/
  4.  
  5. #include<stdio.h>
  6. #include<alloc.h>
  7. #include<process.h>
  8.  
  9. #define fichier "c:\\albulus\\chap_15\\exercice.txt"
  10.  
  11. main( void)
  12. {
  13.     int i0= 16;
  14.     double dble0= 3.141592654;
  15.     char c0= 'Z',
  16.          chaine0[]= "Petrus_Albulus", *chaine1;
  17.     FILE *flux;
  18.         long taille;
  19.  
  20.     flux= fopen( fichier, "w+t");
  21.  
  22.    /* 1. Ecriture des donnΘes dans le fichier.                   */
  23.     fprintf( flux, "%d %s %c %.9lf", i0, chaine0, c0, dble0);
  24.  
  25.    /* 2. Repositionnement α la fin du fichier.                */
  26.     fseek( flux, 0L, 2);
  27.  
  28.    /* 3. Calcul de la taille du fichier.                */
  29.     taille= ftell( flux);
  30.         printf("\n taille du fichier: %ld\n", taille);
  31.  
  32.    /* 4. CrΘation dynamique d'une chaεne ayant la taille du fichier.*/
  33.     chaine1= ( char*) malloc( taille+ 1);
  34.     if( chaine1== NULL)
  35.       {
  36.          printf("\n La mΘmoire disponible est insuffisante!\n");
  37.          exit( 1);
  38.       }
  39.    /* 5. Repositionnement au dΘbut du fichier.                */
  40.     fseek( flux, 0L, 0);
  41.  
  42.    /* 6. Lecture du fichier, fermeture et affichage.            */
  43.     if( fscanf( flux, "%[^(EOF)]", chaine1) == EOF)
  44.         {
  45.        printf("\n Erreur d'Θcriture d'une chaεne!\n");
  46.        exit(1);
  47.     }
  48.  
  49.     fclose( flux);
  50.  
  51.     printf("\n %s", chaine1);
  52. }
  53. /*
  54.  16 Petrus_Albulus Z 3.141593
  55.  
  56. */