我需要读取文件并将它们存储在 mainbuff 和 mainbuff2 中。
我应该只使用open()
, read()
,write()
等系统调用。
我不想将它们存储在堆栈中,如果它会很大怎么办?堆分配更好。
此代码有效:
...
char charbuf;
char *mainbuff1=malloc(100);
char *mainbuff2=malloc(100);
while (read(file1, &charbuf, 1)!=0)
mainbuff1[len++]=charbuf;
while (read(file2, &charbuf, 1)!=0)
mainbuff2[len2++]=charbuf;
...
但 mainbuff 只有 100 个字符。更好的解决方案是在计算文件中的字符后分配 mainbuff,如下所示:
...
char charbuf;
while (read(file1, &charbuf, 1)!=0)
len++;
while (read(file2, &charbuf, 1)!=0)
len2++;
char *mainbuff1=malloc(len);
char *mainbuff2=malloc(len2);
...
然后再次重复while
循环并将字节读入 mainbuff。
但是 2 个循环(第一个将读取和计数,第二个将读取)对于大文件来说效率低且速度慢。需要以一种或其他更有效的方式来完成。请帮忙!不知道!