2009-05-10 13 views

Respuesta

8
#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); 
} 
+0

A (f! = NULL) es obligatorio. fclose (NULL) invoca UB. – dirkgently

+0

fwrite ("x", 1, 1, f); ¿No escribe esto el primer byte de la dirección de la cadena "x"? –

+0

No, no lo hace - ignórame :-) –

5
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); 
+1

"rw" trunca el archivo. Necesitas "rb". –

+0

sizeof (char) == 1, por definición. – dirkgently

+1

Todo el mundo tiene razón :) Mucho tiempo sin C. –

3
#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 */ 
} 
Cuestiones relacionadas