将文本文件读入动态一维数组的最有效方法是什么?在每次读取字符后重新分配看起来很愚蠢,在每次读取行之后重新分配似乎也好不到哪里去。我想将整个文件读入数组。你会怎么做?
发布于 2009-01-04 13:04:49
我不太明白你想要什么。您是否希望增量地处理该文件,从其中读取一行,然后放弃它并处理下一行?或者你想把整个文件读入一个缓冲区?如果你想要后者,我认为这是合适的(检查malloc和fopen的NULL返回值,看看文件是否存在,以及你是否有足够的内存):
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
发布于 2009-01-04 17:16:21
如果要使用ISO,请使用this function。
这是litb的答案,包含了一些错误处理...
https://stackoverflow.com/questions/410943
复制相似问题