我有以下代码,它只是打印一些文本和一个变量到文件中。我收到错误“打开的文件太多”。我在 VS2010 中使用 Windows 上的 C。
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 之外,我没有打开任何东西。
最佳答案
如果你打开的文件太多,这与控制打开句柄或类似内容的环境变量有关——我相信从很久以前的内存来看——这与控制打开句柄的环境变量有关。我正在寻找您的答案,如果找到,我会发布它。这是一个好问题。我同意其他评论,即不断调用 fopen(如果确实发生了这种情况),无论环境变量设置有多大,都会导致此问题。
编辑:
我的内存可能会回到 16 位 Windows。认罪。
关于c - 打开文件太多 : File IO in C on Windows,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5607765/