2012-08-14 30 views
0

我想根據for循環的索引來命名我的文件描述符fp。例如,Concatenate int和FILE *(C/C++)

char* fbad[4]= "fbad"; 
char* mod[3]="mod"; 

for (int i=0; i<10; i++) { 
    sprintf(fbad_file, "%s%s%d", fbad,mod,i); 
    FILE *fp = fopen(fbad_file, "w"); ////???????????? 
    /*then do stuff here*/ 
    fclose(fp); 
} 

如何連接* fp和我這樣的shat描述符對於打開的每個文件都是唯一的?例如,我想實現的是:對於i = 6,FILE * fp6。

在此先感謝。

+0

'char * fbad [4] =「fbad」;'不符合你的想法。 'char fbad [4] =「fbad」;'也不是。 – Neil 2012-08-14 23:37:13

+1

char * fbad =「fbad」; char fbad [] = {「fbad」}; char fbad [5] = {「fbad」}; – Scooter 2012-08-14 23:43:27

回答

0

For example, what I want to achieve is: for i=6, FILE *fp6.

使用數組:

FILE *fp[10]; 
for(int i=0; i<10; i++) { 
    fp[i] = fopen(...); 
} 

儘管如此,如果你正在關閉內部的for循環,什麼是重用fp問題的文件指針?

+0

謝謝@cegfault。你在最後一個問題上提出了一個很好的觀點。作爲後續問題,如果文件指針不在for循環中關閉,是否正確: int functionName(){ //在此定義和初始化 FILE * fp [10];對於(int i = 0; i <4; i ++){ fp [i] = fopen(...); } //在這裏做你的東西 fclose(fp [0]); fclose(fp [1]); fclose(fp [2]); fclose(fp [3]); return 0; } – fclopez 2012-08-15 05:32:02

+0

是的,這在技術上是正確的。當然,這取決於你在做什麼。如果你一次只使用一個文件,我會親自在for循環中完成。但是,如果您同時使用多個文件(例如複製或比較),那麼我會按照您的操作進行操作。 – cegfault 2012-08-15 07:35:57