c语言 怎么从文件中读入数据存储到二维数组中
我要从一个文件中读入数据,并存储到一个二维数组中去,用c语言怎么实现?哪位大侠指点一下啊?最好有源代码给我。...
我要从一个文件中读入数据,并存储到一个二维数组中去,用c语言怎么实现? 哪位大侠指点一下啊? 最好有源代码给我。
展开
4个回答
2008-05-08
展开全部
示例数据文件(c:\data.txt):
1 2 3 4 5
11 22 33 44 55 6
111 222 333 444 555 666 7
程序:
//---------------------------------------------------------------------------
#include <stdio.h>
#include <stdlib.h>
#define FILE_DATA "C:\\DATA.TXT"/*数据文件名*/
#define DFM "%d" /*DFM为文件中所含数据的格式控制符*/
#define PDFM DFM##"\t"
typedef int DTP; /*DTP文件中所含数据的类型*/
int main(void)
{
FILE *fp;
char tmp[255],ch;
DTP **da,tda;
int i=0,j=0;
fp=fopen(FILE_DATA,"r");
da=malloc(sizeof(DTP *)*1);
while (!feof(fp))
{
fscanf(fp,"%*[^0123456789.]%[0123456789.]",tmp);
ch=fgetc(fp);
sscanf(tmp,DFM,&tda);
if (ch!=EOF){
da[i]=realloc(da[i],sizeof(DTP)*(j+1));
da[i][j++]=tda;
tda=da[i][j-1];
}
if (ch=='\n'||ch==EOF) {
da[i]=realloc(da[i],sizeof(DTP)*(j+1));
da[i][j]=-1;
i++;
j=0;
da=realloc(da,sizeof(DTP *)*(i+1));
da[i]=NULL;
}
}
for (i = 0; da[i]!=NULL; i++) {
for (j=0; da[i][j]!=-1; j++) {
printf(PDFM,da[i][j]);
}
putchar('\n');
}
fclose(fp);
free(da);
return 0;
}
//---------------------------------------------------------------------------
1 2 3 4 5
11 22 33 44 55 6
111 222 333 444 555 666 7
程序:
//---------------------------------------------------------------------------
#include <stdio.h>
#include <stdlib.h>
#define FILE_DATA "C:\\DATA.TXT"/*数据文件名*/
#define DFM "%d" /*DFM为文件中所含数据的格式控制符*/
#define PDFM DFM##"\t"
typedef int DTP; /*DTP文件中所含数据的类型*/
int main(void)
{
FILE *fp;
char tmp[255],ch;
DTP **da,tda;
int i=0,j=0;
fp=fopen(FILE_DATA,"r");
da=malloc(sizeof(DTP *)*1);
while (!feof(fp))
{
fscanf(fp,"%*[^0123456789.]%[0123456789.]",tmp);
ch=fgetc(fp);
sscanf(tmp,DFM,&tda);
if (ch!=EOF){
da[i]=realloc(da[i],sizeof(DTP)*(j+1));
da[i][j++]=tda;
tda=da[i][j-1];
}
if (ch=='\n'||ch==EOF) {
da[i]=realloc(da[i],sizeof(DTP)*(j+1));
da[i][j]=-1;
i++;
j=0;
da=realloc(da,sizeof(DTP *)*(i+1));
da[i]=NULL;
}
}
for (i = 0; da[i]!=NULL; i++) {
for (j=0; da[i][j]!=-1; j++) {
printf(PDFM,da[i][j]);
}
putchar('\n');
}
fclose(fp);
free(da);
return 0;
}
//---------------------------------------------------------------------------
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
fopen(fp,"your.txt","w");//打开文件
#define maxn yournumber
int s[maxn][maxn];
int i,j;
for(i=0;i<maxn;i++)
for(j=0;j<maxn;j++)
fscanf(fp,"%d",&s[i][j]);
#define maxn yournumber
int s[maxn][maxn];
int i,j;
for(i=0;i<maxn;i++)
for(j=0;j<maxn;j++)
fscanf(fp,"%d",&s[i][j]);
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
C语言有那个读文件库函数的,如果没有下到,就要自己写。可以按字符文件的方法读入,然后再识别,再转入你要存的数组。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
int readdat(){
FILE *in;
int i,j;
in=fopen("in.txt","r");
if(in==NULL)
printf("NULL");
else{
for(i=1;i<n+1;i++)
{ for(j=1;j<=2;j++)
{fscanf(in,"%d",&aa[i][j]);
printf("%d",aa[i][j]);
}
printf("\n");
}
用这个函数就可以了,呵呵
FILE *in;
int i,j;
in=fopen("in.txt","r");
if(in==NULL)
printf("NULL");
else{
for(i=1;i<n+1;i++)
{ for(j=1;j<=2;j++)
{fscanf(in,"%d",&aa[i][j]);
printf("%d",aa[i][j]);
}
printf("\n");
}
用这个函数就可以了,呵呵
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询