Autor
|
Tema: No se imprimen los datos almacenados en un archivo (Leído 1,968 veces)
|
BJM
Desconectado
Mensajes: 41
|
El problema esta en la funcion void mostrar(); la cual se encarga de imprimir todos los datos almacenados en 2 archivos llamados "trabajadores.dat" y "salario.dat", pero se me imprimen de manera infinita codigos ilegibles, he chequeado muchas veces la funcion y no encuentro el error. #include<stdio.h> #include<conio.h> #include<ctype.h> typedef struct { int clave; char nombre[35]; char categoria; }ttrabajador; typedef struct{ char categoria; int salario; }tcategoria; void crear(); void salario(); void mostrar(); main(){ crear(); salario(); mostrar(); } void crear(){ FILE *p1; ttrabajador nuevo; int i; p1 =fopen("trabajadores.dat","wb+"); if(p1==NULL){ } printf("\n comienza la carga de registro de trabajadores"); printf("\n___________________________________________\n"); for(i=1;i<4;i++){ nuevo.clave=i; do{ printf("\n categoria (A-D): "); scanf("%c",&nuevo. categoria); nuevo. categoria=toupper(nuevo. categoria); }while(nuevo.categoria<'A'||nuevo.categoria>'D'); fseek(p1 ,sizeof(ttrabajador )*(i -1),SEEK_SET ); fwrite(&nuevo ,sizeof(ttrabajador ),1,p1 ); } printf("\n Listado del archivo recien creado"); for(i=1;i<4;i++){ fseek(p1 ,sizeof(ttrabajador )*(i -1),SEEK_SET ); fread(&nuevo ,sizeof(ttrabajador ),1,p1 ); printf("\n clave: %d",nuevo. clave); printf("\n nombre: %s", nuevo. nombre); printf("\n categoria:%c",nuevo. categoria); printf("\n______________________________\n"); } } void salario(){ FILE *p2; tcategoria ficha; int i=0; char categoria; p2 =fopen("salario.dat","wb+"); while(i<4){ ficha.categoria='0'; ficha.salario=0; fwrite(&ficha ,sizeof(tcategoria ),1,p2 ); i++; } do{ do{ printf("\n Introduce categoria(A-D)/0(cero) para fin: "); }while((categoria!='0')&&(categoria<'A'||categoria>'D')); if(categoria!='0'){ fseek(p2 ,sizeof(tcategoria )*(categoria -65),SEEK_SET ); fread(&ficha ,sizeof(tcategoria ),1,p2 ); if(ficha.categoria!='0'){ printf("\n categoria ya introducida"); } else{ ficha.categoria=categoria; printf("\n Introduce sueldo: "); scanf("%d",&ficha. salario); fseek(p2 ,sizeof(tcategoria )*(categoria -65),SEEK_SET ); fwrite(&ficha ,sizeof(tcategoria ),1,p2 ); } } }while(categoria!='0'); printf(" Listado del archivo salario"); for(i=0;i<4;i++){ fseek(p2 ,sizeof(tcategoria )*(i ),SEEK_SET ); fread(&ficha ,sizeof(tcategoria ),1,p2 ); printf("\n categoria: %c",ficha. categoria); printf("\n sueldo: %d",ficha. salario); } } void mostrar(){ FILE *p1; FILE *p2; ttrabajador ficha1; tcategoria ficha2; int clave; p1 =fopen("trabajadores.dat","rb+"); p2 =fopen("salario.dat","rb+"); if(p1==NULL){ printf("\n No se puede abrir trabajadores.dat"); } else{ if(p2==NULL){ printf("\n no se puede abrir salario.dat"); } else { printf("\n\n Clave nombre categoria salario"); printf("\n********************************************\n"); fread(&ficha1 ,sizeof(ttrabajador ),1,p1 ); printf("%10c",ficha1. categoria); fseek(p2 ,sizeof(tcategoria )*(ficha1. categoria-65),SEEK_SET ); fread(&ficha2 ,sizeof(tcategoria ),1,p2 ); printf("%15d",ficha2. salario); } } } }
|
|
|
En línea
|
|
|
|
durasno
Desconectado
Mensajes: 373
|
Hola! el problema de imprimir basura nose porque es, pero el bucle infinito puede ser por esto: fread(&ficha1 ,sizeof(ttrabajador ),1,p1 ); printf("%10c",ficha1. categoria); fseek(p2 ,sizeof(tcategoria )*(ficha1. categoria-65),SEEK_SET ); fread(&ficha2 ,sizeof(tcategoria ),1,p2 ); printf("%15d",ficha2. salario); }
te falto incluir dentro del while otra vez: fread(&ficha1 ,sizeof(ttrabajador ),1,p1 );
Saludos
|
|
|
En línea
|
Ahorrate una pregunta, lee el man
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Manejar archivo .txt desde java (ingresar datos, modificar datos, buscar datos y
Java
|
chuystoty
|
9
|
106,341
|
20 Mayo 2012, 06:13 am
por ELMED
|
|
|
El TC incluye los datos almacenados en un ordenador en el derecho a la intimidad
Noticias
|
wolfbcn
|
0
|
1,604
|
18 Noviembre 2011, 21:59 pm
por wolfbcn
|
|
|
C:Calcular montañas en los datos almacenados en una matriz
« 1 2 »
Programación C/C++
|
deifk
|
18
|
7,666
|
19 Enero 2012, 00:07 am
por Xandrete
|
|
|
Mostrar datos almacenados en una tabla en phpMyAdmin
PHP
|
JonaLamper
|
1
|
2,458
|
30 Septiembre 2014, 18:58 pm
por MinusFour
|
|
|
Creacion de SWAP y acceso a los datos almacenados en la misma
Programación C/C++
|
AlbertoBSD
|
0
|
1,525
|
19 Agosto 2016, 20:14 pm
por AlbertoBSD
|
|