Вы можете использовать что-то вроде следующего: где вы читаете каждую строку, тщательно проверяйте результат и передавайте его в структуру данных по вашему выбору. Я не показал, как правильно распределять память, но вы можете malloc
спереди и realloc
при необходимости.
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#define FILE_BUFFER_SIZE 1024
int file_read_line(FILE *fp, char *buffer)
{
// Read the line to buffer
if (fgets(buffer, FILE_BUFFER_SIZE, fp) == NULL)
return -errno;
// Check for End of File
if (feof(fp))
return 0;
return 1;
}
void file_read(FILE *fp)
{
int read;
char buffer[FILE_BUFFER_SIZE];
while (1) {
// Clear buffer for next line
buffer[0] = '\0';
// Read the next line with the appropriate read function
read = file_read_line(fp, buffer);
// file_read_line() returns only negative numbers when an error ocurred
if (read < 0) {
print_fatal_error("failed to read line: %s (%u)\n",
strerror(errno), errno);
exit(EXIT_FAILURE);
}
// Pass the read line `buffer` to whatever you want
// End of File reached
if (read == 0)
break;
}
return;
}
Нет, если вы не пишете. Вам нужно будет прочитать каждую строку файла по строке – Pankrates
Конечно, файл [memmap] (http://pubs.opengroup.org/onlinepubs/009695399/functions/mmap.html), а затем вы можете получить к нему доступ в виде массива. –
Как читать это по строкам? Или вы имеете в виду char by char? –