2017-02-27 12 views
0

儘可能多的文件儘可能多,但必須至少有一個。 表單是「可執行文件名稱」「標誌」「存檔名稱」「文件....」。如何找出命令行中提供了多少個文件?我知道我必須使用循環。然後,一旦我發現有多少文件,我該如何打開每個文件,並通過每個文件fread然後將它們放到一個存檔文件中?檔案文件是二進制的,正確的?我必須記錄給我多少個文件,每個文件的名稱,每個文件名稱的長度,每個文件的大小以及每個文件的內容,然後將它們全部放入存檔文件中。沒有壓縮創建存檔器可執行文件及其部分內容是存檔從命令行參數給出的文件

+1

'argc'是'argv'中的元素總數(包括'argv [0]'中的可執行文件名稱)。所以'argc - 3'是輸入文件的數量。 – Barmar

+1

您是否遵循預先存在的歸檔格式標準,或者您是否創建自己的歸檔格式標準?你知道'argc'有多少個參數,假設你的主程序有'int main(int argc,char ** argv)'。你不需要循環來找出有多少文件。你確實需要一個循環遍歷文件列表。你的檔案是否有集中的字典或分佈式字典?您是否將所有文件大小和名稱(以及存檔中的位置)信息記錄在文件頂部(集中式),還是您在存檔中的每個文件之前都有信息? –

+0

是的我有int main(int argc,char ** argv),哦好吧,終端自動知道argc的值嗎?然後,如何根據argc中的值有多少來遍歷每個文件?但是這些文件直到argv [3]才被列出,所以我如何確保我只是通過文件循環並打開並將它們寫入歸檔文件?那個循環會是什麼樣子? – melb27

回答

0
char *filenames[argc-3]; 
for(i = 3; i < argc; i++) 
{ 
    filenames[i-3] = argv[i]; 
    printf("Files = %s\n", filenames 
} 

因此,該循環將找出有多少argc參數不包括「可執行」「標誌」「存檔名稱」。接下來,我將argc中有多少個文件。然後filenames []會將這些文件存儲在命令行參數中,對嗎?那麼我將如何循環訪問該數組並打開每個文件,並使用我稱之爲不同的函數來確定大小?

相關問題