2011-09-04 82 views
1

我有一个预定数量的一维双数组,并且希望将它们中的每一个写入文件。例如,如果我有96个数组,我希望有96个不同的文件包含这些数组。如何使用fopen和文件指针打开多个文件?

我初始化文件,如下所示:

FILE * f=fopen("domain001.txt","w"); 
... 
... 
... 
fclose(f) 

我想这样做初始化为“文件指针数组”。我可能有一个函数,我发送要初始化的文件数量,例如96,函数将初始化96个文本文件,如domain001.txt到domain096.txt。我怎样才能做到这一点?

谢谢你的帮助。

+0

为什么不创建一个文件指针数组并一次打开一个呢? –

+0

@富Bah。它是如何完成的? –

+0

看到我的回应。 –

回答

3

我不知道我有什么你想要的..可能是这样吗?

FILE* files[FILE_N]; 
for(int i = 0; i < FILE_N; i++) { 
    char filename[50]; 
    sprintf(filename, "domain%03d", i); 
    files[i] = fopen(filename, "w"); 
} 
+0

它就像一个魅力!谢谢西蒙娜。 –

+0

你真的很受欢迎! – Simone

2

你可以做一些俗气,如:

FILE ** filelist = (FILE **) malloc(96 * sizeof(FILE*)); 
for(int i = 0; i != 96; ++i) { 
    char buf[1024]; 

    // now we build the file name 
    strcpy(buf, "domain"); // "domain" 
    sprintf(buf+6,"%03d", i+1); // "domain001" ... "domain096") 
    strcat(buf, ".txt"); // "domain001.txt" ... "domain096.txt" 

    // open file 
    filelist[i] = fopen(buf, "w"); 
} 

现在filelist[i]对应于i个文件。

+0

谢谢,但它没有编译,并给出了错误:C2440:'初始化':不能从'void *'转换为'FILE **' –

+0

对不起,忘了它是C++,你需要施放它。更新回复 –

+0

谢谢Foo Bah,它的工作原理。 –