[英]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.