使用Linux系统调用打开和读取。 读取调用接受3个参数
read(File descriptor, Buffer array, Size of the buffer array);
我的问题与论点#3有关。假设我有多个文本文件要读入我的缓冲区数组。但据我所知,C不具备 Vector 或 ArrayList 或任何其他动态大小的结构。
有没有一种简单的方法来计算文件的大小,所以我知道我应该为char数组分配多少空间?
答案 0 :(得分:7)
您还可以stat()
确定文件的大小,然后在其上调用mmap()。您的文件将显示为“数组”而无需malloc()
内存。
答案 1 :(得分:2)
答案 2 :(得分:2)
我不知道它是否合格有效,但简单地移动到文件的末尾并从那里获取长度是“容易的”:
fseek(readf, 0, SEEK_END);
fileLen=ftell(readf);
buffer=(char *)malloc(fileLen);
答案 3 :(得分:1)
通常的做法是读入固定长度的缓冲区,然后将每个“记录”复制到动态分配的结构中(例如malloc()struct *或char *)。
正如cnicutar建议的那样,你也可以“统计”文件,malloc()一个大小的缓冲区,并一次读取所有文件。