使用 fstream.h 可以打开多少文件是否有任何限制(实际上)
Is there any restriction on how many files can be opened using fstream.h (practically)
>澄清:这不是重复的,因为
- 我也在打开文件后关闭它们。
- 程序在 20-40 次迭代后挂起,而不是另一个问题中所说的几百
我试图以 2000 个文件的形式创建一个简单的拼图,其中将存储数字。我不需要详细介绍,但基本上它需要一个可以打开和关闭 2000 个文件的循环。但是,在 20-40 次迭代后,程序会意外地开始挂起并且不恢复,也不会给出任何错误等。我浏览了程序的语法,其他一切看起来都很好,所以问题仅仅是C++不支持如此大量的文件吗?
法典:
#include<iostream>
#include<fstream>
#include<stdlib.h>
#include<time.h>
using namespace std;
int main()
{
ofstream out;
char a[4];
int i,j,k,n,no[5],queue[2000],q=1; //n = no of nos, q=first free index in queue
queue[0]=1;
bool successful;
srand(time(NULL));
for(i=0;i<2000;++i)
{
cout<<"nnIteration "<<i;
snprintf(a,sizeof(a),"%d",queue[i]);
out.open(a);
cout<<"nFile "<<a<<" openedn";
n=rand()%4+2;
cout<<n<<" random nos to be generated";
for(j=0;j<n;++j)
{
no[j]=rand()%2000+1;
do
{
successful=true;
for(k=0;k<i;++k)
if(queue[k]==no[j])
successful=false;
} while (!successful);
}
cout<<"nNos selected ";
for(j=0;j<n;++j)
cout<<no[j]<<" ";
for(j=0;j<n;++j)
out<<no[j]<<"n";
cout<<"nWritten to file";
out.close();
out.open("logs", ios::app);
cout<<"nLogs opened";
out<<"nn"<<i<<"n ";
for(j=0;j<n;++j)
out<<no[j]<<"n ";
out.close();
cout<<"nLog entry made";
for(j=0;j<n;++j)
queue[q+j]=no[j];
q+=n;
cout<<"nAppended to queue, new queue length: "<<q<<"nn";
}
}
该问题与
打开文件无关。程序在第 28-34 行的无限循环中挂起,而 (!success)。
相关文章:
- 是否有任何C++功能可以对地图进行排序?
- 在C++行尾写一个分号或多个分号是否会改变任何内容
- C++类型特征,以查看是否可以<uint32_t>对类型"K"的任何变量调用"static_cast(k)"
- 是否有任何建议来统一函数类型限定符并简化可恶的函数类型?
- GoogleMock是否仍然打算与任何测试框架一起使用?
- C++中是否有任何函数等同于python中字典的get函数?
- 用于检查值是否为其任何参数的帮助程序函数
- 在实践中,在运行时为零的乘法中是否有任何"lazy"评估
- 如何检测除整数以外的任何内容是否传递给我的类构造函数?
- 检查数组中的任何值是否等于添加到数组的当前值
- 检查从查询返回的任何行是否包含在字符串中的最高性能方法?
- 这些场景中的任何一个是否会造成内存泄漏
- Strchr不起作用,或者我需要一个替代方案来检查给定字符串中的任何字符是否是另一个字符串的一部分
- 如何查询范围中的任何位是否在 C++ std::bitset 中设置
- 默认情况下,任何函数是否能够就地工作
- 检查Eigen::矩阵的任何元素是否与零不同
- C++检查前 5 个或接下来的 5 个元素中的任何一个是否等于值
- 程序状态的任何变化是否构成可观察的行为?
- 检查循环中出现的任何条件是否已满足c++
- 是否可以遍历一个类以查看一个类或其任何基础是否具有特定的特征?