Tengo una secuencia de archivos abierta y lista.Cambiar un byte en un archivo en C
¿Cómo accedo y cambio un solo byte en la secuencia de modo que el cambio se refleje en el archivo?
¿Alguna sugerencia?
Tengo una secuencia de archivos abierta y lista.Cambiar un byte en un archivo en C
¿Cómo accedo y cambio un solo byte en la secuencia de modo que el cambio se refleje en el archivo?
¿Alguna sugerencia?
#include "stdio.h"
int main(void)
{
FILE* f = fopen("so-data.dat", "r+b"); // Error checking omitted
fseek(f, 5, SEEK_SET);
fwrite("x", 1, 1, f);
fclose(f);
}
A (f! = NULL) es obligatorio. fclose (NULL) invoca UB. – dirkgently
fwrite ("x", 1, 1, f); ¿No escribe esto el primer byte de la dirección de la cadena "x"? –
No, no lo hace - ignórame :-) –
FILE* fileHandle = fopen("filename", "r+b"); // r+ if you need char mode
fseek(fileHandle, position_of_byte, SEEK_SET);
fwrite("R" /* the value to replace with */, 1, 1, fileHandle);
"rw" trunca el archivo. Necesitas "rb". –
sizeof (char) == 1, por definición. – dirkgently
Todo el mundo tiene razón :) Mucho tiempo sin C. –
#include <stdio.h> /* standard header, use the angle brackets */
int main(void)
{
char somechar = 'x'; /* one-byte data */
FILE* fp = fopen("so-data.txt", "r+");
if (fp) {
fseek(fp, 5, SEEK_SET);
fwrite(&somechar, 1, 1, fp);
fclose(fp);
}
return 0; /* if you are on non-C99 systems */
}
texto o binario? – dirkgently