c - 将文件读入 char 数组,然后 malloc 大小。 (C)

标签 c pointers malloc command-line-arguments

嘿,假设我得到一个文件作为第一个命令行参数。

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/

相关文章:

c++ - 0xC0000005 : Access violation reading location of an Integer?

c - malloc 问题导致段错误

c - int 数组的动态内存分配

c - 在 C 中使用指针提取数组的一部分

c - 当非阻塞流套接字连接时调用 getsockname() 是否安全?

c - 获取 sizeof 可变数量的参数

c - c 中的链表和 MALLOC

c - 是否可以使用 OpenCV 录制音频

c - 了解指针和 malloc

C++ 指针引用、类和指针列表、奇怪的返回