Изменение одного байта в файле в C - PullRequest
6 голосов
/ 10 мая 2009

У меня есть поток файлов, открытый и готовый.

Как получить доступ и изменить один байт в потоке, чтобы изменение отразилось на файле?

Есть предложения?

Ответы [ 3 ]

8 голосов
/ 10 мая 2009
#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);
}
5 голосов
/ 10 мая 2009
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);
3 голосов
/ 10 мая 2009
#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 */
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...