[C con Clase] Retroceder el puntero en archivo binario
Salvador Pozo
salvador en conclase.net
Sab Jul 5 22:20:06 CEST 2008
El pasado 2008-07-04 15:08:55, Carolina Herrera escribió:
CH> Ya modifiqué el programa y aún sigue sin funcionar =(, como que ya empiezo a resignarme y usar el modo convencional (contando registros).
Hola:
No deberías resignarte, el método propuesto debería funcionar. Debe existir un error, y hay que encontrarlo.
Puedes probar con este programa de ejemplo:
----8<------
#include <cstdio>
#include <cstring>
using namespace std;
int main()
{
FILE *fs;
char car[12];
int i;
fs = fopen("pruebas.dat", "wb");
fprintf(fs, "abracadabra");
fclose(fs);
fs = fopen("pruebas.dat", "r+b");
while(!feof(fs)) {
fseek(fs, 0, SEEK_CUR);
fread(car, sizeof(char), 1, fs);
if(car[0] == 'a') {
fseek(fs, -sizeof(char), SEEK_CUR);
car[0] = 'e';
fwrite(car, sizeof(char), 1, fs);
}
}
fclose(fs);
fs = fopen("pruebas.dat", "r");
fgets(car, 12, fs);
printf("cadena: %s\n", car);
fclose(fs);
return 0;
}
----8<------
A ver si funciona, y en caso contrario podremos echar la culpa al compilador.
Hasta pronto.
--
Salvador Pozo (Administrador)
mailto:salvador en conclase.net
Más información sobre la lista de distribución Cconclase