2009-05-10 13 views

cevap

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) gereklidir. fclose (NULL) UB'yi çağırır. – dirkgently

+0

fwrite ("x", 1, 1, f); Bu, "x" dizesinin adresinin ilk baytını yazmaz mı? –

+0

Hayır, yok - beni yok sayıyorum –

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" dosyayı kırpıyor. "Rb" ye ihtiyacın var. –

+0

sizeof (char) == 1, tanım olarak. – dirkgently

+1

Herkes haklı :) Uzun süre yok 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 */ 
}