Caracteres basura al leer un fichero dat

vortex
19 de Agosto del 2004
Hola a todos,

tengo un problema,y es que he hecho una pequeña base de ditos para llevar los prestamos, lista de socios y libros, etc de una biblioteca.
El problema esta es que cuando leo la lista de socios o de libros, me sale el listado y al final 6 0 7 lineas con caracteres sin sentido q supongo que seran cosas internas que escribe la maquina al abrir el fichero, o el programa o yo que se.

Os dejo unas pequeñas partes del codio fuente de como abro el fichero, lo escribo etc.
PD: El programa lo escribi con el DEV C++ de Windows, pero tengo que compilarlo y ejecutarlo en LINUX¿tiene algo que ver?


void bajar_socios(struct socio clientes[]){
FILE *pf; /* Definimos puntero de tipo FILE como variable para las*/
/* funciones de ficheros fopen y fclose */
pf=fopen("socios.dat","rb");
if(pf==NULL)
{printf("No se pudo abrir socios.datn");
return;}
/* Escribimos los datos del fichero en el array de estructuras de los*/
/* clientes: */
fread(clientes,sizeof(struct socio),NS,pf);
fclose(pf);}




void lista_socios(struct socio clientes[])
{int i;
char *comparo="";
for (i=0;i<NS;i++)
if(strcmp(comparo,clientes[i].nombre))
printf("%s %s %s %dn",clientes[i].nombre,clientes[i].ap1,clientes[i].ap2,clientes[i].pp);}


Espero vuestras respuestas.Es para un ttrabajo de clase.gracias a todos

chuidiang
19 de Agosto del 2004
Sin ver cómo escribes el fichero o cómo declaras las variables (principalmente el tamaño del array), es dificil saber qué está pasando.

Puede ser que intentes leer más registros de los que realmente hay escritos. fread() leería sólo los que puede y dejaría el resto del array relleno al azar.

Puede ser que el array no tenga suficientes "huecos" para todos los registros que hay en el fichero. Cuando intentes escribir en pantalla los últimos registros (que están fuera del array), puede salir cualquier cosa.

Se bueno.

vortex
19 de Agosto del 2004
Hola,

antes de nada gracias por tu respuesta. La verdad es que no se que pued eser pq estoy harto de darle vueltas al programacreo que el problema viene en la forma en que recorro las estructuras, o bien que estas estructuras no acaban en caracteres en bllanco por lo que sea.
Como es muy dificl de explicar si estas interesado y crees que sabes lo suficiente del tema me lo dices y te envio el programa comentado para ver si le puedes ehcarle un vistazo pq yo soy un novato y lo estoy pasando bastante mal ya q tengo q entregar el trabajo en una seman y estoy desesperado.

gracias por tus respuestas.un saludo

ana
19 de Agosto del 2004
No entiendo muy bien tu código, pero lo que puedo suponer es que estás grabando datos en blanco. Si esás grabando desde un array puede ser que no todos los elementos del mismo tengan datos, pero tú lo estás grabando entero.
Si quieres mandarme el código completo, intentaré mirar a ver si puedo ayudarte.