创建要写入的文件时是否需要malloc?
该文件将基于其他2个文件的内容,因此我需要为sizeof( file a ) + sizeof( file b) + 1
的可写文件使用malloc空间吗?
对不起,如果这没有意义;如果没有,那么我想我还需要阅读更多内容:D
基本上,我有2个txt文件和一个字符串序列 - 我正在用字符串序列并排编写每个文件的每一行。
txt file a
hello stack over
flow this
is a test
txt file b
jump the
gun i am
a novice
seperator == xx
output ==
hello stack overxxjump the
flow thisxxgun i am
is a testxxa novice
答案 0 :(得分:1)
如果您是按顺序编写的,那么只要您需要编写内容而不是一次性写入整个文件,就不能只使用fprintf()
或fwrite()
吗?
EDIT2:在msw的帮助下:
const int BUFSIZE = 200;
FILE *firstFile = fopen("file1.txt", "r");
FILE *secondFile = fopen("file2.txt", "r");
FILE *outputFile = fopen("output.txt", "w");
char* seperator = "xx";
char firstLine[BUFSIZE], secondLine[BUFSIZE];
// start a loop here
fgets(firstLine, 200, firstFile);
fgets(secondLine, 200, secondFile);
// Remove '\n's from each line
fprintf(outputFile, "%s%s%s", firstLine, seperator, secondLine);
// end a loop here
fclose(outputFile);
fclose(firstFile);
fclose(secondFile);
答案 1 :(得分:1)
如果您需要将整个文件保存在内存中,则只需要malloc
文件的整个大小(即使这样,您也可以使用mmap
或其他内容)。为您打算在内存中使用的数据分配所需的内存:不多也不少。
答案 2 :(得分:0)
文件在磁盘上,malloc用于RAM。
如果你需要内存中的空间来存储写入文件的数据,那么你只需要malloc,否则,通常你会使用堆栈分配的缓冲区8k来写入块中的文件。
所以按原样提出你的问题,不,你很少只是为了写一个文件而使用malloc。
如果您的目标是在完成时将文件保留在内存中,那么您将使用malloc sizeof文件。