функция чтения: копирование буфера, перераспределение памяти - PullRequest
0 голосов
/ 07 ноября 2011

Я пытаюсь прочитать текстовый файл с помощью функции чтения и сохранить в буфере. Затем мне нужно еще раз проверить файл, чтобы увидеть, были ли внесены какие-либо изменения, и, если они есть, перераспределить память и сохранить содержимое в том же буфере (добавление), символ за символом, пока не будет достигнут EOF. Мой код выглядит так:

int fileSize=0;
fileSize=fileStat.st_size; /*fileSize is how many bytes the file is, when read initially*/

char buf[fileSize];
read(0, buf, fileSize);

/*now, I have to check if the file changed*/
int reader;
void *tempChar;
int reader=read(0, tempChar, 1);
while(reader!=0){
   /*this means the file grew...I'm having trouble from here*/

Я много чего пробовал, но всегда возникали проблемы, когда я пытался добавить содержимое из "tempChar" в "buf". Я знаю использовать функцию realloc .. но у меня все еще есть проблемы. Любая помощь будет оценена.

Спасибо!

1 Ответ

1 голос
/ 07 ноября 2011

Нельзя использовать realloc() для статически выделенной памяти.

Если вы хотите это сделать, вы должны использовать указатели и динамически распределять память.

Пример:

char *buf;
buf = malloc(fileSize);
...