分别用C语言和C++读取txt文件到一个二维数组

txt中的数据为浮点类型,有符号。总过29行,34列。我想新建一个29行,34列的二维数组,把txt读经去。刚刚起步,很多知识不懂,感谢帮助,谢谢谢谢。... txt中的数据为浮点类型,有符号。总过29行,34列。我想新建一个29行,34列的二维数组,把txt读经去。

刚刚起步,很多知识不懂,感谢帮助,谢谢谢谢。
展开
 我来答
匿名用户
2015-08-02
展开全部
参考思路:
打开文件,然后读入一行到字符串str里面,循环读取行即可;
参考例子如下:
#include <stdio.h>
#include <stdlib.h>
/*
1.txt

1,2,3,4,5,6,7
8,9,10,11,12,13,14
15,16,17,18,19,20,21

*/
int main ()
{
FILE *fp;
int **a;//定义二维数组
int i,j;
int row=0,column=0;//行,列
char ch;

//打开文件
if((fp=fopen("1.txt","r"))==NULL)
{
printf("open error\n");
return 1;
}

//统计列数
while(!feof(fp)&&(ch=fgetc(fp))!='\n')
if(ch==',')
column++;

column++;
if(column==1)
{
printf("no data\n");
return 1;
}
//置文件首部
fseek(fp,0L,0);
//统计行数
while(!feof(fp))
if(fgetc(fp)=='\n')
row++;
row++;
if(row==1)
{
printf("no data\n");
return 1;
}

//开辟内存
a=(int**)malloc(sizeof(int*)*row);
if(a==NULL)
{
printf("no memory\n");
return 1;
}
for(i=0;i<row;i++)
{
a[i]=(int*)malloc(sizeof(int)*column);
if(a[i]==NULL)
{
printf("no memory\n");
return 1;
}
}

//置文件首部
fseek(fp,0L,0);
//读入数据
while(!feof(fp))
for(i=0;i<row;i++)
for(j=0;j<column;j++)
fscanf(fp,"%d,",&a[i][j]);

//输出显示
for(i=0;i<row;i++)
{
for(j=0;j<column;j++)
j==column-1?printf("%d",a[i][j]):printf("%d,",a[i][j]);
printf("\n");
}

//关闭文件
fclose(fp);

//释放内存
for(i=0;i<row;i++)
free(a[i]);
free(a);

return 0;

}
孤松独海
2011-05-29 · TA获得超过1513个赞
知道大有可为答主
回答量:1220
采纳率:0%
帮助的人:492万
展开全部
可以打开文件,然后读入一行 到字符串str里面
int a[29][34];
循环读取行
如果现在是第 i行
char *ch=strtok(str,",");
int j=0;
  while(ch!=NULL)  
 {
 a[i][j++]=atof(ch);  
 ch=strtok(NULL,",");
 }
追问
#include 
void main() {
int i,j;
double data[29][34];
FILE *fp;
fp = fopen("Faults_NNA.txt","r");
for(i=0;i<29;i++) {
for(j=0;j<34;j++) {
fscanf(fp,"%6.4f",&data[i][j]);
printf("%6.4f\n",data[i][j]);
}
}
fclose(fp);
}

前辈,您能帮我看下上面的代码错在哪里吗?
追答
咋了 读不出数据吗
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
康博熙
2011-05-29
知道答主
回答量:35
采纳率:0%
帮助的人:13.5万
展开全部
设数组为double,用循环直接读
追问
#include 
void main() {
int i,j;
double data[29][34];
FILE *fp;
fp = fopen("Faults_NNA.txt","r");
for(i=0;i<29;i++) {
for(j=0;j<34;j++) {
fscanf(fp,"%6.4f",&data[i][j]);
printf("%6.4f\n",data[i][j]);
}
}
fclose(fp);
}

前辈,您能帮我看下上面的代码错在哪里吗?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式