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

2024-11-29 06:37:09
推荐回答(3个)
回答1:

参考思路:
打开文件,然后读入一行到字符串str里面,循环读取行即可;
参考例子如下:
#include
#include
/*
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 {
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 for(j=0;j fscanf(fp,"%d,",&a[i][j]);

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

//关闭文件
fclose(fp);

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

return 0;

}

回答2:

可以打开文件,然后读入一行 到字符串str里面
int a[29][34];
循环读取行
如果现在是第 i行
char *ch=strtok(str,",");
int j=0;
  while(ch!=NULL)  
 {
 a[i][j++]=atof(ch);  
 ch=strtok(NULL,",");
 }

回答3:

设数组为double,用循环直接读