2013-10-25 18 views
-1

我有C程序需要兩個參數,第一個是filename.txt,第二個是一些參數。並且,最終產生一些分數。現在,我有10,000個文件夾命名爲1.txt .... 10,000.txt,我想使用該C程序計算所有10,000文件的分數,並且想要將所有分數放在文件result.txt中。如何將C程序用於多個文件

我該如何自動化這件事。

+2

請顯示一些代碼,你有什麼試過? –

+1

我希望你聽說過循環? –

+1

您是否需要用於獲取C程序參數的代碼,或者某些shell命令將文件列表提供給C程序? – Claudio

回答

1

你可以做兩件事情

  1. 編寫的所有文件作爲參數來調用您的程序順次外部腳本。
  2. 改變你的程序,使它遍歷所有的文件。您可以使用sprintf遍歷文件名。

    char filename[50]; 
    for (int i = 1; i < 10000; ++i) { 
        sprintf(filename, "%d.txt", i); 
        FILE* file = fopen(filename); 
        // .. do stuff 
        fclose(file); 
    } 
    
+0

第一個將不起作用,他想合併來自所有文件的數據,而不是單獨對它們進行操作。 – Barmar

+0

取決於OP如何做到這一點。我會讓腳本聚合數據,但這取決於需求。可能是原始程序無法修改的情況。 –

0

樹的方式。

第一種是通過在參數給大家文件:

./myProgram的1.txt -args 2.txt -args ...

第二個是通過給你的文件名字,那麼你的論點 ./myProgram * .TXT -args

;三是通過編寫使用至極一個循環,你會尋找所有文件的程序

0

C程序:

#include <stdio.h> 

int main (int argc, char *argv[]) 
{ 
    /* open file argv[1] with options in argv[2] */ 
    /* ... */ 
    return 0; 
} 

./program directory/*.txt 
0

運行它,你可以這樣來做:

  1. 由於文件的存儲參數傳遞目錄名。給 所有文件名作爲參數是不可能的,當你有這麼多的 那些。我不確定當前版本的C標準是怎麼說的,但至少提到ANSI C至少要提到的是編譯器應該能夠至少花費3135個功能參數,所以有10,000個是相當大的數量的 。

  2. 然後使用例如readdir()函數遍歷給定目錄中的所有文件,並執行您需要執行的工作。

相關問題