Archivos en c con fwrite

Estoy trabajando con turbo c++ 3.0, manejando archivos de texto y utilizando la instrucción fwrite, después de haber almacenado 11 registros, los siguientes registros se me graban con basura, sin importar el tipo de dato (long, int, char[n])
Necesito saber que hacer para que esto no suceda y cual es el motivo por el cual sucede

1 respuesta

Respuesta
1
... para buscar el error. Solo una cosa, si los archivos son de texto, supongo que antes de escribir los números con fwrite los conviertes a cadena... porque en caso contrario, tendrás los números almacenados correctamente (si usas bien el fwrite), pero en formato binario, con lo que si intentas editar el archivo es probable que te dé la impresión de que contiene basura. Si es este tu caso, prueba de utilizar fprintf para escribir en el archivo.
De todos modos, si este no es tu problema, pásame el fragmento de código que falla y le echo un vistazo.
Con respecto a mi pregunta anterior. En realidad los archivos si los estoy manejando como binario, de todas manera aquí le envío uno de los fragmentos donde utilizo las instrucción y la definición de algunas de las variables
Le agradezco por su atención e interés
struct UNITE
{
long codigo;
char palabra[20];
int frecabs;
float frecrel;
}reguni;
int tamuni = sizeof(struct UNITE);
char ch, word[20];
int word_pos, totpal=0, docpal, docu=1;
long cod=1, codc=1;
FILE *unite;
void insertunite()
{
fseek(unite,0L,SEEK_SET);
{
reguni.codigo = cod;
codc = cod;
cod++;
strcat(word,"\0");
strcpy(reguni.palabra,word);
reguni.frecabs = 1;
reguni.frecrel = 0;
fseek(unite,0L,SEEK_END);
fwrite (&reguni,tamuni,1,unite);
totpal++;
}
}
Ya encontré mi error: yo tenía dos programas, uno en el que creaba el archivo y hacía una serie de operaciones, y otro que utilizaba para leer los datos almacenados en el primer programa. El error era que en el primer programa abría el archivo como binario y en el segundo como texto.
Su sugerencia me sirvió para identificar este "pequeño" error.
Gracias

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas