Re: [問題] 關於命令列一次讀多個檔案及參數
※ 引述《neville123 (nk)》之銘言:
: FILE *stream [512] ;
: void *runner(void* id);
^^^^^
先問一下,你確定你是要 return void* ?
我看你函式實作似乎是只有 void runner(void* id)
: int main(int argc, char *argv[]){
^^^^^^ ^^^^^^^
這裡才是 argc, argv
... 恕刪 ...
: }
: void *runner(void* id){
: (int*)id;
: printf ("%d ", id);
: stream[id] = fopen("argv[id]", "r");
^^^^^^^^^^
這裡推斷,你對 argc, argv, 引數參數 沒有很熟
: ;
: }
--------------------------------------------------------
先簡化你的問題好了, 畢竟你的問題還有牽扯到
function pointer 當引數參數。
如果你的需求只是要取得 argv 的參數列的話,
應該是這麼做
int main(int argc, char **argv)
{
int ix=0;
for(ix=0; ix<argc; ++ix) {
printf("第 %d 個參數為 %s\n", ix, argv[ix]);
}
}
假設您的生成檔為 T.exe
執行時,如果於命令提示字元輸入 T.exe \o \p a.dat b.txt
那麼 argc = 5
argv[0] = T.exe, argv[1] = \o, argv[2] = \p
argv[3] = a.dat, argv[4] = b.txt
於此可以觀查到, argv[0] 將是執行檔名
--------------------------------------------------------
如果你要的動作是像這樣 T.exe 1.txt 2.txt 3.txt 4.txt
然後去開啟 1~4 .txt 進行寫入
那應該是這麼做
#include <stdio.h>
FILE *fp[512];
int main(int argc, char **argv)
{
int iStart=1; // 檔名是從 index 1 開始的
// 一次全開
for(iStart=1; iStart<argc, ++iStart)
fp[iStart-1] = fopen(argv[iStart], "w");
// dosomething
// 一次全關
for(iStart=1; iStart<argc, ++iStart)
fp[iStart-1] = fclose(argv[iStart];
return 0;
}
如果你是要傳到 sub_func 去開啟檔案的話,
你的 sub_func 還要多加二個引數去接 main func 裡面的 argc 和 argv
--------------------------------------------------------
提外話, C/C++ 用 fopen/fstream 指令的話一次最多大概可以開 2048 個檔案
預設最多可開 512 個檔案 (depend on compiler)
vc 可調用 _getmaxstdio 與 _setmaxstdio
512 這個數字可以設定, 不過似乎只能設小, 不能設大,
就算設小, 最小值也要大於等於 FOPEN_MAX
要設大,最大值不能超過 2048 (depend on compiler)
要再開更多檔案的話就要用 open 方式去開
至於 open 可以最多可以開幾個檔的話..
depend on OS
--
YouLoveMe() ? LetItBe() : LetMeFree();
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 180.177.76.142
※ 編輯: tropical72 來自: 180.177.76.142 (01/03 23:36)
→
01/03 23:56, , 1F
01/03 23:56, 1F
→
01/03 23:56, , 2F
01/03 23:56, 2F
→
01/03 23:57, , 3F
01/03 23:57, 3F
→
01/04 00:02, , 4F
01/04 00:02, 4F
→
01/04 00:28, , 5F
01/04 00:28, 5F
→
01/04 00:28, , 6F
01/04 00:28, 6F
→
01/04 00:29, , 7F
01/04 00:29, 7F
→
01/04 00:30, , 8F
01/04 00:30, 8F
→
01/04 00:30, , 9F
01/04 00:30, 9F
推
01/04 09:15, , 10F
01/04 09:15, 10F
→
01/04 09:16, , 11F
01/04 09:16, 11F
討論串 (同標題文章)
完整討論串 (本文為第 2 之 2 篇):
3
33
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章
11
38