gonzalob

Untitled

Jun 4th, 2020
1,351
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.71 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. typedef struct
  5. {
  6.     char nombre[20];
  7.     int edad;
  8. }persona;
  9.  
  10. int main()
  11. {
  12.     FILE * archi = fopen("archivo.dat","rb");//abre para lectura
  13.     //FILE * archi2 = fopen("archivo2.dat","rb");//abre para lectura
  14.  
  15.  
  16.     persona per;
  17.     fflush(stdin);
  18.     scanf("%s",&per.nombre);
  19.     fflush(stdin);
  20.     scanf("%d",&per.edad);
  21.  
  22.  
  23.     if (archi == NULL) //si es null no existe
  24.     {
  25.         printf("no existe! listo para grabar\n");
  26.         archi = fopen("archivo.dat","wb");
  27.         if (archi != NULL)
  28.         {
  29.             fwrite(&per,sizeof(persona),1,archi);
  30.             per.edad = 1;
  31.             fwrite(&per,sizeof(persona),1,archi);
  32.             per.edad = 2;
  33.             fwrite(&per,sizeof(persona),1,archi);
  34.             per.edad = 3;
  35.             fwrite(&per,sizeof(persona),1,archi);
  36.         }
  37.  
  38.  
  39.     }
  40.     fclose(archi); //cerrar el buffer
  41.  
  42.     archi = fopen("archivo.dat","rb");
  43.     if (archi != NULL)
  44.     {
  45.         while (fread(&per,sizeof(persona),1,archi)>0)
  46.         {
  47.             printf("%s\n",per.nombre);
  48.             printf("%d\n",per.edad);
  49.         }
  50.     }
  51.  
  52.     /*
  53.     fseek(archi,sizeof(persona) * 2-1, SEEK_SET);
  54.     fread(&per,sizeof(persona),1,archi);
  55.     printf("%s\n",per.nombre);
  56.     printf("%d\n",per.edad);
  57.  
  58.     fseek((archi,sizeof(persona)*-1, SEEK_END);//leer la ultima
  59.  
  60.     */
  61.  
  62.  
  63.     fseek(archi,0, SEEK_END);//me quedo en el borde final del archivo
  64.     long tam = ftell(archi);
  65.  
  66.     printf("tam -> %ld\n",tam); //96
  67.  
  68.     int cantidad = tam / sizeof(persona);
  69.  
  70.     printf("cantidad -> %d\n",cantidad); //96
  71.  
  72.  
  73.  
  74.  
  75.     fclose(archi); //cerrar el buffer
  76.  
  77.   //  fclose(archi2); //uno por cada fopen
  78.     return 0;
  79. }
Advertisement
Add Comment
Please, Sign In to add comment