Ver Mensaje Individual
  #1 (permalink)  
Antiguo 21/02/2011, 06:45
roser24
 
Fecha de Ingreso: marzo-2010
Mensajes: 127
Antigüedad: 14 años, 1 mes
Puntos: 2
fscanf en fichero secuencial..

Hola chicos,

Tengo el siguiente problema ..no se como leer un fichero secuencial con fscanf
lo he intentado pero no lo hace ..,escribir si me lo hace pero leer no me lo lee correctamente que hago mal¿?,aparte lo ideal seria que visualizara un registro y luego haga una pausa y luego al pulsar intro me visualize el siguiente registro hasta que sea EOF.
como podria hacerlo¿?..
Muchas gracias a todos de antemano..

Código C:
Ver original
  1. /*crear el fichero secuencial vendedor.dat*/
  2. #include<stdio.h>
  3. #include<stdlib.h>
  4. #include<ctype.h>
  5. #include<string.h>
  6.  
  7. struct vendedor{
  8. char apellido1[15];
  9. char apellido2[15];
  10. char nombre[15];
  11. char sexo;
  12. float sueldo_base;
  13. float ventas;
  14. };
  15.  
  16. int main(void){
  17. FILE *pf;
  18. struct vendedor vend;
  19. char mas='s';
  20. pf=fopen("vendedor.dat","w");
  21. do{
  22. printf("Introduce valores a los campos del registros:\n");
  23.     printf("iNtroduce el primer apellido:\n");
  24.     scanf("%s",vend.apellido1);
  25.     fflush(stdin);
  26.     printf("Introduce un segundo apellido:\n");
  27.     scanf("%s",vend.apellido2);
  28.     fflush(stdin);
  29.     printf("Introduce el nombre:\n");
  30.     scanf("%s",vend.nombre);
  31.     fflush(stdin);
  32.        
  33.         printf("Introduce el sexo solo 'M' o 'F':\n");
  34.         do{
  35.         scanf("%c",&vend.sexo);
  36.         vend.sexo=toupper(vend.sexo);
  37.         fflush(stdin);
  38.         }while(vend.sexo!='M'&&vend.sexo!='F');
  39.     printf("Introduce el sueldo base:\n");
  40.     scanf("%f",&vend.sueldo_base);
  41.     fflush(stdin);
  42.     printf("iNtroduce ventas:\n");
  43.     scanf("%f",&vend.ventas);
  44.     fflush(stdin);
  45.     fprintf(pf,"Apellido1:%s ",vend.apellido1);
  46.     fprintf(pf,"Apellido2:%s ",vend.apellido2);
  47.     fprintf(pf,"Nombre:%s ",vend.nombre);
  48.     fprintf(pf,"Sexo:%c ",&vend.sexo);
  49.     fprintf(pf,"sueldobase:%f ",&vend.sueldo_base);
  50.     fprintf(pf,"ventas:%f \n",&vend.ventas);
  51.    
  52.     printf("\ncrear un nuevo registro? (si->S o no->N)\n");
  53.     do{
  54.     scanf("%c",&mas);
  55.     mas=toupper(mas);
  56.     fflush(stdin);
  57.     }while(mas!='S' && mas!='N');
  58. }while(mas=='S');
  59. fclose(pf);
  60.     pf=fopen("vendedor.dat","rb");
  61.     fscanf(pf,"Apellido1:%s ",vend.apellido1);
  62.     fscanf(pf,"Apellido2:%s ",vend.apellido2);
  63.     fscanf(pf,"Nombre:%s ",vend.nombre);
  64.     fscanf(pf,"Sexo:%c ",&vend.sexo);
  65.     fscanf(pf,"sueldobase:%f ",&vend.sueldo_base);
  66.     fscanf(pf,"ventas:%f \n",&vend.ventas);
  67.     while(!feof(pf)){
  68.       printf("\nPrimer Apellido: %s",vend.apellido1);
  69.       printf("\nSegundo Apellido: %s",vend.apellido2);
  70.       printf("\nNombre: %s",vend.nombre);
  71.       printf("\nSexo : %c",vend.sexo);
  72.       printf("\nSueldo Base: %f",vend.sueldo_base);
  73.       printf("\nVentas: %f",vend.ventas);
  74.  
  75.     fscanf(pf,"Apellido1:%s ",vend.apellido1);
  76.     fscanf(pf,"Apellido2:%s ",vend.apellido2);
  77.     fscanf(pf,"Nombre:%s ",vend.nombre);
  78.     fscanf(pf,"Sexo:%c ",&vend.sexo);
  79.     fscanf(pf,"sueldo base:%f ",&vend.sueldo_base);
  80.     fscanf(pf,"ventas:%f \n",&vend.ventas);
  81.     }
  82.  
  83. fclose(pf);
  84. }

Última edición por roser24; 21/02/2011 a las 07:00