c语言如何把一个文件的每一行读入到一个二维数组中,
答案:4 悬赏:30
解决时间 2021-11-08 13:48
- 提问者网友:独菊痴梦
- 2021-11-08 08:34
文件的每一行是一字符串,
最佳答案
- 二级知识专家网友:寂寞的炫耀
- 2021-11-08 08:44
例子
#include <stdio.h>
#include <string.h>
#define MAXLINE 3
#define MAXCOLUMN 10
void main(void){
FILE *fp; //文件指针
char arr[MAXLINE][MAXCOLUMN]={0}; //定义3行10列的二维数组并初始化
int i = -1;
if((fp=fopen("./test/filename.txt","r"))==NULL){ //打开txt文件
perror("File open error!\n");
return;
}
while((fgets(arr[++i],MAXCOLUMN+1,fp))!=NULL) //读取一行并存到arr数组,百度fgets
printf("%d: ",i); //打印行号
//puts(arr[i]);
char *subarr = strtok(arr[i]," "); //以空格为分隔符从arr[i]中获得字串,百度strtok
while(subarr!=NULL){
data[i][j] = atoi(subarr); //将字串转为int型数据存入data数组
printf("%d\t",data[i][j]); //打印data[i][j
subarr = strtok(NULL," "); //继续获得arr[i]中的字串
j++; //data数组列加一
}
printf("\n");
}
//循环完毕后,所有数据已在data数组中
printf("\n");
fclose(fp); //关闭指针
}
全部回答
- 1楼网友:兮沫♡晨曦
- 2021-11-08 11:29
#include<stdio.h>int read(char *fn,char a[][100],int maxLine)
{
FILE *f=fopen(fn,"r");
int i=0;
if(f)
{
while(!feof(f))
{
fgets(a[i],100,f);
if(++i>=maxLine)
{
break;
}
}
}
fclose(f);
return i;
}
char a[500][100];
void main()
{
int i=0;
int n=read("c:\\service.log",a,500);
for(i=0;i<n;i++)
{
printf("%s",a[i]);
}}
把read的第一个参数改成你的文件名。
- 2楼网友:深街酒徒
- 2021-11-08 10:51
如果是数组a[][]for(count=0;;count++)
{ if(gets(a[count])==NULL)//这样就可以了 把你的每一行已经读入了 并且当最后文件的结尾时就break了 break; }
- 3楼网友:怪咖小青年
- 2021-11-08 09:58
#include <stdio.h> void main() { double a[2][1000],vx=0,vy=0,varx,vary,ax=0,ay=0; int i,n; scanf("%d",&n); //n是整型,所以用%d for(i=0;i<=n-1;i++) { scanf("%lf",&a[0][i]); //数组起始为0,不是1 scanf("%lf",&a[1][i]); ax+=a[0][i]; //求和 ay+=a[1][i]; } ax=ax/n; //求均值 ay=ay/n; for(i=0;i<=n-1;i++) { vx=vx+(a[0][i]-ax)*(a[0][i]-ax); vy=vy+(a[1][i]-ay)*(a[1][i]-ay); } varx=vx/n; vary=vy/n; printf("varx=%lf\nvary=%lf\n",varx,vary); }
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯