[英]C: read in more than one file
大家好,使用POSIX API系统调用read
, write
, open
等。我可以打开,读取,写入文件并将其内容复制到输出文件。 我将如何仅使用相关的系统调用将多个文件复制到输出文件?
我目前有:
filein = open(argv[1],O_RDONLY,0);
打开一个文件。(这是argv1,但我想知道如何做argv2和argv3等。)
我试过了 :
j=0;
filein = open(argv[j],O_RDONLY,0);
但这会将argv0的内容打印到我的输出文件中。
我被困在下一阶段要做多个文件。 (我也有一个EOF
循环,因此在1个文件退出后,我将如何继续执行下一个文件)。
请您协助我进入下一阶段? 谢谢。
argv[0]
是程序的名称。
argv[1]
是第1命令行参数。
argv[2]
是第二个命令行参数。
等等
所以:
1
而不是0
开始循环(即j=0
不正确)。 在编写代码之前,请先考虑一下算法。
现在您可以编写代码了。
如果您包含错误处理,则可能会获得积分。 (当文件丢失,不可读,文件系统损坏或计算机内存或磁盘空间不足时会发生什么?)
如果要将两个文件名串联在一起,则需要重新考虑算法以及所需的内容。 “读取命令行上给出的前两个文件并将它们写入第三个文件”与“将命令行上给出的所有文件追加到给出的最后一个文件”之间是有区别的。
算法:
此时,您会发现很多冗余。
该算法更具挑战性,但消除了冗余。
为此,您需要了解argc
及其与argv
关系。 用伪代码:
if number_of_arguments < 2 then
print "This program concatenates files; two or more file names are required."
exit
end
int outfile = open arguments[ number_of_arguments ] for writing
int j = 1
while j < number_of_arguments do
int infile = open arguments[ j ] for reading
string contents = read infile
write contents to outfile
close infile
increment j
end
close outfile
如果您在使用C语法时遇到问题,请搜索教程。 例如:
使用循环读取所有文件。 从1开始,跳过位于argv [0]的当前执行进程。
for(int i = 1; i < argc; ++i)
{
int filein = open(argv[i],O_RDONLY,0);
// ... process file
close(filein)
}
argv [0]是程序的名称。 argv [1]是第一个,然后您在命令行中传递。
打开输出文件,然后打开每个输入文件。 将每个输入文件读入输出文件,然后全部关闭并退出。
打开一个文件。(这是argv1,但我想知道如何做argv2和argv3等。)
fopen(argv[2], ...)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.