C:将多个文件复制到一个文件中

时间:2010-12-16 22:34:03

标签: c

我在C(Linux)中尝试使用API​​调用(仅)通过命令行将多个输入文件复制到一个输出文件中时遇到问题。我在互联网上搜索了答案,但似乎没有解决。 我的程序允许我通过命令行指定多个输入文件和一个输出文件。例如:

./archiver file1.txt file2 file3 file4 outputfile

我使用argc / argv阅读了这些参数。出于某种原因,当我执行ls -l时,./archiveroutputfile具有相同的字节数,这意味着我的输入文件都没有被复制到我的输出文件中,只是内存中的任何内容(当我做cat outputfile它显示了一堆这些)

输入文件中的所有内容都不在我的输出文件中。

请帮助我,因为在那些“我不知道该做什么之后我试着阅读malloc()等但是我不知道如何实现这个或者如果那甚至相关的。

感谢您的帮助,感谢您的帮助。

file_desc_in = open(argv[i],O_RDONLY,0);    
//NEED a loop to copy multiple files in...  
while (!eof) {
     bytes_read = read(file_desc_in, &buffer, sizeof(buffersize)); 

     if (bytes_read > 1)
         bytes_written = write(file_desc_out, &i, bytes_read);
     else {
         eof=1;
     }

我没有包含错误,但我确实有错误。感谢您立即回复。

3 个答案:

答案 0 :(得分:1)

查看代码会有所帮助。这里没有太多东西可以继续,但我会猜测一下。我怀疑你正在复制argv[0](你的程序)指定的文件而没有得到其余的。我不认为我能用你给的东西做得更好。

答案 1 :(得分:1)

您说您只使用API​​调用。您在谈论什么API? POSIX API?标准C文件I / O API?

如果您只是组合输入文件,那么您真的不需要编写C程序来完成它。由于您运行的是Linux,请尝试使用shell命令cat input1 input2 input3 > output

如果您必须编写C程序来执行此操作,请从简单开始。在实际执行任何文件I / O之前,请确保您可以正确解释输入参数。让您的程序只需在命令行输入中读取并打印出类似这样的内容:

Input files: file1.txt file2.txt file2.txt
Output files: outputfile.txt

这样,您可以在开始担心文件I / O之前验证CLI解析代码是否正常工作。一次调试一件事情要容易得多。

答案 2 :(得分:1)

您的外部循环需要打开每个文件名,并在循环结束时关闭它。在读取所有输入文件后,在最后关闭输出文件。

您还应该了解openreadwritefopenfreadfwrite之间的区别。