чтение текстового файла в массив в c

18
задан skaffman 21 February 2010 в 22:51
поделиться

3 ответа

Я не понимаю вполне, что Вы хотите. Вы хотите инкрементно обработать файл, читая одну строку из него, затем отказываетесь от него и обрабатываете следующее? Или Вы хотите считать весь файл в буфер? Если Вы хотите последнего, я думаю, что это является соответствующим (проверка на ПУСТОЙ возврат для malloc и fopen в реальном коде для того, существует ли файл и получили ли Вы достаточно памяти):

FILE *f = fopen("text.txt", "rb");
fseek(f, 0, SEEK_END);
long pos = ftell(f);
fseek(f, 0, SEEK_SET);

char *bytes = malloc(pos);
fread(bytes, pos, 1, f);
fclose(f);

hexdump(bytes); // do some stuff with it
free(bytes); // free allocated memory
26
ответ дан 30 November 2019 в 07:09
поделиться

Если mmap (2) доступен в Вашей системе, можно открыть файл и отобразить его в память. Тем путем у Вас нет памяти для выделения, Вы даже не должны читать файл, система сделает это. <забастовка> можно использовать fseek () обманывает litb, дал для получения размера .

void *mmap(void *start, size_t length, int prot, int flags, int fd, off_t offset);

РЕДАКТИРОВАНИЕ : необходимо использовать lseek() для получения размера файла.

int fd = open("filename", O_RDONLY);
int nbytes = lseek(fd, 0, SEEK_END);
void *content = mmap(NULL, nbytes, PROT_READ | PROT_WRITE, MAP_PRIVATE, fd, 0);
13
ответ дан 30 November 2019 в 07:09
поделиться

Если Вы хотите использовать ISO C, используйте эта функция .

Это - ответ litb, перенесенный с некоторой обработкой ошибок...

1
ответ дан 30 November 2019 в 07:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: