1

我是编程新手,我有一个问题,我需要制作许多文件以写入 >15,所以我不想手动执行,我使用了文件数组。这很好用,但是当我需要给出每个文件的位置并且通过使用“for cyclus”我无法更改目标中的文件名时,问题就开始了,这是代码的一部分......

#include <stdio.h>
main()
{
int i;
FILE *files[14];
for(i=0;i<15;i++)
files[i]=fopen("C:\\File.txt" ,"w");
}
for(i=0;i<15;i++)
fclose(files[i]);
getch();
}

问题出在 fopen 函数上,因为它只打开第一个文件,而不打开其他文件...如果您需要更多解释,请询问将尝试尽可能多地证明...谢谢

4

2 回答 2

1

您只提供一个名称,因此您不是尝试打开 15 个文件,而是尝试打开一个文件 15 次。除非您指定共享模式,否则将失败(至少对于 Windows 上的大多数编译器,这似乎是您正在使用的)。

我的猜测是你想打开 15 个不同的文件,在这种情况下你需要指定 15 个不同的文件名。这样做的一种可能性是合成包含索引的名称。由于您似乎正在使用 C(尽管有c++标签),所以我暂时坚持使用 C。

int i;
FILE *f[15];

for (i=0; i<15; i++) {
    char name[32];

    sprintf(name, "File%d.txt", i);
    f[i] = fopen(name, "w");
}
于 2013-02-14T00:33:22.797 回答
0

您需要做的是首先定义您将使用的文件数组。

因此,当您声明 FILE *files[14] 时,您需要实际指定每个文件是什么。

您应该首先声明一组字符串,而不是使用特定的文件名,然后循环遍历它们。

另外,你的 for 循环是错误的,应该是

for(i = 0; i < 14; i++) {
...
}

您需要从 0 开始索引,并在 13 停止索引。

于 2013-02-14T00:32:10.507 回答