要malloc还是不要malloc,那就是问题!

时间:2010-03-05 19:06:34

标签: c file file-io malloc

创建要写入的文件时是否需要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

3 个答案:

答案 0 :(得分:1)

如果您是按顺序编写的,那么只要您需要编写内容而不是一次性写入整个文件,就不能只使用fprintf()fwrite()吗?

编辑:基于您的更新,这里基本上是您必须做的事情(因为我不是C程序员,可能不是有效的C):

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文件。