如何用c++读取一个文件夹中的多个txt文件到对应的数组
用C++读取一个文件夹中的多个txt文件,并且那些txt文件名没用规律,依次读到不同的数组中去,(txt文件很多,几百个。所以需要几百个数组)...
用C++读取一个文件夹中的多个txt文件,并且那些txt文件名没用规律,依次读到不同的数组中去,(txt文件很多,几百个。所以需要几百个数组)
展开
2个回答
展开全部
使用for循环加文件操作函数即可读取txt文件当中的数组。
1、C语言标准库提供了一系列文件操作函数。文件操作函数一般以f+单词的形式来命名(f是file的简写),其声明位于stdio.h头文件当中。例如:fopen、fclose函数用于文件打开与关闭;fscanf、fgets函数用于文件读取;fprintf、fputs函数用于文件写入;ftell、fseek函数用于文件操作位置的获取与设置。
2、例程:
#include<stdio.h>
int i,a[100];
int main(){
FILE * fp1 = fopen("input.txt", "r");//打开输入文件
FILE * fp2 = fopen("output.txt", "w");//打开输出文件
if (fp1==NULL || fp2==NULL) {//若打开文件失败则退出
puts("不能打开文件!");
rturn 0;
}
for(i=0;fscanf(fp1,"%d",a+i)!=EOF;i++);//从输入文件连续读取整数到数组a
for(;i--;)fscanf(fp2,"%d ",a[i]);//把数组a逆序写入到输出文件当中
fclose(fp1);//关闭输入文件
fclose(fp2);//关闭输出文件,相当于保存
return 0;
}
展开全部
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <io.h>
using namespace std;
int main()
{
std::locale::global(std::locale(""));
struct _finddata_t fd;
intptr_t hf;
ifstream fs;
vector<vector<int> > fns;
if((hf = _findfirst( "*.txt", &fd )) != -1)
{
do {
fs.open(fd.name);
fs.seekg(0);
fs.clear();
fns.resize(fns.size()+1);
int d;
while(fs>>d)
{
fns[fns.size()-1].push_back(d);
}
fs.close();
} while( _findnext( hf, &fd ) == 0 );
_findclose(hf);
}
//现在所有内容都在fns中
//打印读取的内容
cout<<"文件数:"<<fns.size()<<endl;
for (int i=0;i!=fns.size();i++)
{
cout<<"第"<<i+1<<"个文件:"<<endl;
for (int j=0;j<fns[i].size();j++)
{
cout<<fns[i][j]<<endl;
}
}
//放到一个普通的数组里,每个元素都是int型指针,指向文件中的数字。如果某文件中没有数字,则该指针问NULL
int **ppData=new int *[fns.size()];
int count=fns.size();
for (int i=0;i!=fns.size();i++)
{
if(fns[i].size()>0)
ppData[i]=&fns[i][0];
else
ppData[i]=NULL;
}
//这个指针数组不用的时候删的
delete []ppData;
return 0;
}
#include <fstream>
#include <string>
#include <vector>
#include <io.h>
using namespace std;
int main()
{
std::locale::global(std::locale(""));
struct _finddata_t fd;
intptr_t hf;
ifstream fs;
vector<vector<int> > fns;
if((hf = _findfirst( "*.txt", &fd )) != -1)
{
do {
fs.open(fd.name);
fs.seekg(0);
fs.clear();
fns.resize(fns.size()+1);
int d;
while(fs>>d)
{
fns[fns.size()-1].push_back(d);
}
fs.close();
} while( _findnext( hf, &fd ) == 0 );
_findclose(hf);
}
//现在所有内容都在fns中
//打印读取的内容
cout<<"文件数:"<<fns.size()<<endl;
for (int i=0;i!=fns.size();i++)
{
cout<<"第"<<i+1<<"个文件:"<<endl;
for (int j=0;j<fns[i].size();j++)
{
cout<<fns[i][j]<<endl;
}
}
//放到一个普通的数组里,每个元素都是int型指针,指向文件中的数字。如果某文件中没有数字,则该指针问NULL
int **ppData=new int *[fns.size()];
int count=fns.size();
for (int i=0;i!=fns.size();i++)
{
if(fns[i].size()>0)
ppData[i]=&fns[i][0];
else
ppData[i]=NULL;
}
//这个指针数组不用的时候删的
delete []ppData;
return 0;
}
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询