Fich: seek ciudades

21 fich seek-ciudades.html
#include <stdio.h>
 
 struct datos
   {
      char nombre[21];
      unsigned short int edad;
      char ciudad[21];
   }persona[3];       
   
int main()
{
   FILE *fichero;
   int i=0;
   int numero;
   
   if ((fichero = fopen("gente.dat", "r+b")) == NULL)
      printf("No se pudo abrir el archivo.\n");
   else
   {     
      do
      {  //escribrir registros
         puts("Nombre:");       
         gets(persona[i].nombre);       
         puts("Edad:");        
         scanf("%d", &persona[i].edad);
         fflush(stdin);        
         puts("Ciudad:");      
         gets(persona[i].ciudad);   
         fwrite(&persona[i], sizeof(persona), 1, fichero);
         i++;
      }
      while (i < 3);    
      fclose(fichero);
  } 
 
  if((fichero = fopen("gente.dat", "r+b")) == NULL)
     printf("No se pudo abrir el archivo.\n"); 
  else
  {   
     printf("Escriba el numero del registro a sustituir:\n (Para salir, escriba 0).\n");
     scanf("%d", &numero); 
     do 
     {
        //sobrescribir registro
		printf("numero= %d", numero);
        i = numero-1;
        printf("\nEscriba datos del registro a reescribir:\n");
        fflush(stdin); 
        puts("Nombre:");       
        gets(persona[i].nombre);       
        puts("Edad:");        
        scanf("%d", &persona[i].edad);
        puts("Ciudad:");  
		fflush(stdin);     
        gets(persona[i].ciudad);   
        fseek(fichero, sizeof(persona)*(i), SEEK_SET);
        fwrite(&persona[i], sizeof(persona), 1,  fichero);
		printf("\nNombre:%s\n Edad:%hd\n Ciudad:%s\n\n", persona[i].nombre, persona[i].edad, persona[i].ciudad);  
		
		//leer registro a eleccion por numero de registro
        printf("Escriba el numero del registro a leer:\n (Para salir, escriba 0).\n");
    	scanf("%d", &numero); 
		printf("numero= %d", numero);
        i = numero-1;
        fseek(fichero, sizeof(persona)*(i), SEEK_SET);
        fread(&persona[i], sizeof(persona), 1,  fichero); 
		printf("\nNombre:%s\n Edad:%hd\n Ciudad:%s\n\n", persona[i].nombre, persona[i].edad, persona[i].ciudad);  
		printf("Escriba el numero del registro a sustituir:\n (Para salir, escriba 0).\n");
    	scanf("%d", &numero); 
      }   
     while ((numero > 0) && (numero <= 3));                                            
     fclose(fichero);
  }
 
}


No hay comentarios:

Publicar un comentario