C++逐行读取txt中的数据,并保存到数组中,每行两个两个数据组成点,并以逗号隔开这样保存

例如txt中数据:1,1,2,2,3,3,4,45,5,6,6,7,7,8,8,9,910,10,11,11输出时是(1,1),(2,2),(3,3),(4,4)(5,5... 例如txt中数据:
1,1,2,2,3,3,4,4
5,5,6,6,7,7,8,8,9,9
10,10,11,11

输出时是
(1,1),(2,2),(3,3),(4,4)
(5,5),(6,6),(7,7),(8,8),(9,9)
(10,10),(11,11)
急求。。。在线等
展开
 我来答
hwy_2000
2012-02-01 · TA获得超过170个赞
知道小有建树答主
回答量:152
采纳率:100%
帮助的人:86.8万
展开全部
#define MAX 100
char string[MAX][MAX];
char changed[MAX][MAX*2];
void readtxt()
{
FILE *fp;
if((fp = fopen("x.txt","r")==NULL)
{
return;
}
char string[MAX];
int i=0,j =0;
while(fgets(&string[j],MAX,fp))
{
int judge=0;
int k = 0;
changed[j][k]='(';
for(i=0;i<MAX;i++)
{
if(string[j][i]>='0' && string[j][i]<='9'){
changed[j][++k]=string[j][i];
}
else if(string[i] == ','){
judge ++;
if(judge==1)
changed[j][++k]=string[j][i];
else{
judge = 0;
changed[j][++k]=')';
changed[j][++k]=',';
changed[j][++k]='(';
}
}
else{
changed[j][++k]=')';
changed[j][++k]='\0';
break;
}
}//for
j++;
}//while
fclose(fp);
//存入文件
if((fp = fopen("y.txt","w")==NULL)
{
return;
}
for(i=0;i<j;i++){
fputs(&changed[i],fp);
}
fclose(fp);
}

题意不是很清楚,不知道这样输出是不是你想要的。

如果是希望把整型数据(double型不能这么做)全部存入数组可以这样做:
#define MAX 100
int num[MAX];
void readtxt()
{
FILE *fp;
if((fp = fopen("x.txt","r")==NULL)
{
return;
}
char string[MAX];
int i,j =0;
while(fgets(string,MAX,fp))
{
int value=0;
for(i=0;i<MAX;i++)
{
if(string[i]>='0' && string[i]<='9'){
value += string[i] - '0';
value *= 10;
}
else if(string[i] == ','){
num[j] = value/10;
j++;
value = 0;
}
else
break;
}
}
fclose(fp);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友2a674be
2012-02-01 · 超过11用户采纳过TA的回答
知道答主
回答量:32
采纳率:0%
帮助的人:27.3万
展开全部
参照之前弄的这个,读取一行后,保存到std::string中,然后做一下解析即可。
http://zhidao.baidu.com/question/339724352.html?oldq=1
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
z287438743z
2012-02-01 · TA获得超过272个赞
知道答主
回答量:245
采纳率:0%
帮助的人:189万
展开全部
这个……不就是加几个括号啊……
在偶数个逗号前后加括号
楼上好复杂!
#include<fstream>
#include<string>
using namespace std;
int main()
{
ofstream fout("in.txt");
ifstream fin("out.txt");
while (true)
{
bool flag=false;
string sz;
getline(fin,sz);
if (sz=="") break;
fout<<"(";
for(int i=0;i!=sz.length();i++)
{
if (sz[i]==',')
{
if (flag) fout<<"),("; else fout<<",";
flag=!flag;
continue;
}
fout<<sz[i];
}
fout<<")"<<endl;
}
fin.close();
fout.close();
}
通俗易懂,就是字符串操作。
希望帮到你!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xxcc309
2012-02-01 · TA获得超过409个赞
知道小有建树答主
回答量:403
采纳率:0%
帮助的人:334万
展开全部
你可以看下C++的文件流,有整行读取的函数,然后你再用字符串打断函数,以“,”为标准打断之后在存储输出即可。
追问
怎么存成点的形式?
追答
这只是一种输出形式而已,你只要存储两个数据,输出的时候先输出“(”,在输出数值和“,”最后再输出“)”就可以了,如果需要存储到点,你可以用CPoint类。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wwwmajin
2012-02-01 · TA获得超过206个赞
知道答主
回答量:241
采纳率:0%
帮助的人:157万
展开全部
你的txt文件是什么格式的?每行有几个数?
还是不确定?
追问
不确定的,txt文件里都是double型数据
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式