嘿,假设我得到一个文件作为第一个命令行参数。
int main(int argc, char** argv) {
unsigned char* fileArray;
FILE* file1 = fopen(argv[1], "r");
}
现在我该如何着手将该文件一个字符一个字符地读取到 char* fileArray
中?
基本上,在我知道我需要 malloc 多大的 char*
之前,如何将 FILE*
转换为 char*
我知道一个可能的解决方案是使用缓冲区,但我的问题是我正在处理可能包含超过 900000 个字符的文件,并且认为它不适合制作那么大的缓冲区。
最佳答案
如果仅使用“真实”文件(不是流、设备...),您可以使用stat
/fstat
或类似的东西
int retval=fseek(file1,0,SEEK_END); // succeeded if ==0 (file seekable, etc.)
long size=ftell(file1); // size==-1 would be error
rewind(file1);
预先获取文件的大小。然后你可以 malloc 和阅读。 但是由于 file1 可能同时发生变化,您仍然必须确保读取的内容不会超出您分配的大小。
关于c - 将文件读入 char 数组,然后 malloc 大小。 (C),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4021361/