我有C程序需要兩個參數,第一個是filename.txt,第二個是一些參數。並且,最終產生一些分數。現在,我有10,000個文件夾命名爲1.txt .... 10,000.txt,我想使用該C程序計算所有10,000文件的分數,並且想要將所有分數放在文件result.txt中。如何將C程序用於多個文件
我該如何自動化這件事。
我有C程序需要兩個參數,第一個是filename.txt,第二個是一些參數。並且,最終產生一些分數。現在,我有10,000個文件夾命名爲1.txt .... 10,000.txt,我想使用該C程序計算所有10,000文件的分數,並且想要將所有分數放在文件result.txt中。如何將C程序用於多個文件
我該如何自動化這件事。
你可以做兩件事情
改變你的程序,使它遍歷所有的文件。您可以使用sprintf遍歷文件名。
char filename[50];
for (int i = 1; i < 10000; ++i) {
sprintf(filename, "%d.txt", i);
FILE* file = fopen(filename);
// .. do stuff
fclose(file);
}
第一個將不起作用,他想合併來自所有文件的數據,而不是單獨對它們進行操作。 – Barmar
取決於OP如何做到這一點。我會讓腳本聚合數據,但這取決於需求。可能是原始程序無法修改的情況。 –
樹的方式。
第一種是通過在參數給大家文件:
./myProgram的1.txt -args 2.txt -args ...
第二個是通過給你的文件名字,那麼你的論點 ./myProgram * .TXT -args
;三是通過編寫使用至極一個循環,你會尋找所有文件的程序
C程序:
#include <stdio.h>
int main (int argc, char *argv[])
{
/* open file argv[1] with options in argv[2] */
/* ... */
return 0;
}
與
./program directory/*.txt
運行它,你可以這樣來做:
由於文件的存儲參數傳遞目錄名。給 所有文件名作爲參數是不可能的,當你有這麼多的 那些。我不確定當前版本的C標準是怎麼說的,但至少提到ANSI C至少要提到的是編譯器應該能夠至少花費3135個功能參數,所以有10,000個是相當大的數量的 。
然後使用例如readdir()
函數遍歷給定目錄中的所有文件,並執行您需要執行的工作。
請顯示一些代碼,你有什麼試過? –
我希望你聽說過循環? –
您是否需要用於獲取C程序參數的代碼,或者某些shell命令將文件列表提供給C程序? – Claudio