Tôi có một luồng tệp đang mở và sẵn sàng.Thay đổi một byte trong một tệp trong C
Làm cách nào để truy cập và thay đổi một Byte đơn lẻ trong luồng sao cho thay đổi được phản ánh trên tệp?
Mọi đề xuất?
Tôi có một luồng tệp đang mở và sẵn sàng.Thay đổi một byte trong một tệp trong C
Làm cách nào để truy cập và thay đổi một Byte đơn lẻ trong luồng sao cho thay đổi được phản ánh trên tệp?
Mọi đề xuất?
#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) là bắt buộc. fclose (NULL) gọi UB. – dirkgently
fwrite ("x", 1, 1, f); Điều này không ghi byte đầu tiên của địa chỉ của chuỗi "x"? –
Không, nó không - bỏ qua tôi :-) –
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" cắt ngắn tệp. Bạn cần "rb". –
sizeof (char) == 1, theo định nghĩa. – dirkgently
Mọi người đều đúng :) Thời gian dài không có 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 */
}
văn bản hoặc nhị phân? – dirkgently