打开的文件太多:Windows上的C中的文件IO

时间:2011-04-09 20:41:26

标签: c windows io

我有以下代码,只是将一些文本和变量打印到文件中。我收到错误“太多打开文件”。我在VS2010中使用Windows。

int i, count = 0;
FILE *f;
int _x, _y, _z, _x2, _y2, _z2;

for (i = 0; i < HEIGHT * WIDTH*3; i+= 3)
{
    if (buffer1[i/3] < MAGIC_VALUE)
    {
        count++;
    }

    if (buffer2[i/3] < MAGIC_VALUE)
    {
        count++;
    }
}

printf("Count = %d\n", count); // prints correctly...
f = fopen("file.abc", "w"); // f == NULL. perror gives "Too many open files"
fprintf(f, "lots\n of\n text\n");
fprintf(f, "count: %d\ntext \ntext y\ntext text text", count); 
fprintf(f, "\nend");

fclose(f);

当它正在运行时,除了visual studio之外我什么都没有打开。

1 个答案:

答案 0 :(得分:0)

如果你获得了太多的打开文件,那就必须这样做 - 我相信很久以前的内存 - 这与控制打开句柄或类似内容的环境变量有关。我正在寻找你的答案,如果我发现它就会发布。这是一个很好的问题。我同意其他持续调用fopen的评论 - 如果发生了这种情况 - 无论环境变量设置有多大都会导致这个问题。

编辑:

我的记忆可能会回到16位Windows。 Mea Culpa。