C语言读取文件中数字并且转为二维数组
我有一个特定数据文件,但是数字排版格式很乱想把它读取出来并存在一个特定矩阵当中0.75770.35000.86870.16900.97970.90370.39930.12...
我有一个特定数据文件,但是数字排版格式很乱想把它读取出来并存在一个特定矩阵当中
0.7577 0.3500 0.8687 0.1690 0.9797 0.9037 0.3993 0.1206
0.7431 0.1966 0.0844 0.6491 0.4389 0.8909 0.5269 0.5895
0.3922 0.2511 0.3998 0.7317 0.1111 0.3342 0.4168 0.2262
0.6555 0.6160 0.2599 0.6477 0.2581 0.6987 0.6569 0.3846
0.1712 0.4733 0.8001 0.4509 0.4087 0.1978 0.6280 0.5830
0.7060 0.3517 0.4314 0.5470 0.5949 0.0305 0.2920 0.2518
0.0318 0.8308 0.9106 0.2963 0.2622 0.7441 0.4317 0.2904
0.2769 0.5853 0.1818 0.7447 0.6028 0.5000 0.0155 0.6171
0.0462 0.5497 0.2638 0.1890 0.7112 0.4799 0.9841 0.2653
0.0971 0.9172 0.1455 0.6868 0.2217 0.9047 0.1672 0.8244
0.8235 0.2858 0.1361 0.1835 0.1174 0.6099 0.1062 0.9827
0.6948 0.7572 0.8693 0.3685 0.2967 0.6177 0.3724 0.7302
0.3171 0.7537 0.5797 0.6256 0.3188 0.8594 0.1981 0.3439
0.9502 0.3804 0.5499 0.7802 0.4242 0.8055 0.4897 0.5841
0.0344 0.5678 0.1450 0.0811 0.5079 0.5767 0.3395 0.1078
0.4387 0.0759 0.8530 0.9294 0.0855 0.1829 0.9516 0.9063
0.3816 0.0540 0.6221 0.7757 0.2625 0.2399 0.9203 0.8797
0.7655 0.5308 0.3510 0.4868 0.8010 0.8865 0.0527 0.8178
0.7952 0.7792 0.5132 0.4359 0.0292 0.0287 0.7379 0.2607
0.1869 0.9340 0.4018 0.4468 0.9289 0.4899 0.2691 0.5944
0.4898 0.1299 0.0760 0.3063 0.7303 0.1679 0.4228 0.0225
0.4456 0.5688 0.2399 0.5085 0.4886 0.9787 0.5479 0.4253
格式类似于这个
读取后存在50*50的 矩阵当中
并求出一个Z与这些数的差值的平方和最小(最小二乘法 ,选做,但可以追加分数 )
我要代码~~时间紧迫 展开
0.7577 0.3500 0.8687 0.1690 0.9797 0.9037 0.3993 0.1206
0.7431 0.1966 0.0844 0.6491 0.4389 0.8909 0.5269 0.5895
0.3922 0.2511 0.3998 0.7317 0.1111 0.3342 0.4168 0.2262
0.6555 0.6160 0.2599 0.6477 0.2581 0.6987 0.6569 0.3846
0.1712 0.4733 0.8001 0.4509 0.4087 0.1978 0.6280 0.5830
0.7060 0.3517 0.4314 0.5470 0.5949 0.0305 0.2920 0.2518
0.0318 0.8308 0.9106 0.2963 0.2622 0.7441 0.4317 0.2904
0.2769 0.5853 0.1818 0.7447 0.6028 0.5000 0.0155 0.6171
0.0462 0.5497 0.2638 0.1890 0.7112 0.4799 0.9841 0.2653
0.0971 0.9172 0.1455 0.6868 0.2217 0.9047 0.1672 0.8244
0.8235 0.2858 0.1361 0.1835 0.1174 0.6099 0.1062 0.9827
0.6948 0.7572 0.8693 0.3685 0.2967 0.6177 0.3724 0.7302
0.3171 0.7537 0.5797 0.6256 0.3188 0.8594 0.1981 0.3439
0.9502 0.3804 0.5499 0.7802 0.4242 0.8055 0.4897 0.5841
0.0344 0.5678 0.1450 0.0811 0.5079 0.5767 0.3395 0.1078
0.4387 0.0759 0.8530 0.9294 0.0855 0.1829 0.9516 0.9063
0.3816 0.0540 0.6221 0.7757 0.2625 0.2399 0.9203 0.8797
0.7655 0.5308 0.3510 0.4868 0.8010 0.8865 0.0527 0.8178
0.7952 0.7792 0.5132 0.4359 0.0292 0.0287 0.7379 0.2607
0.1869 0.9340 0.4018 0.4468 0.9289 0.4899 0.2691 0.5944
0.4898 0.1299 0.0760 0.3063 0.7303 0.1679 0.4228 0.0225
0.4456 0.5688 0.2399 0.5085 0.4886 0.9787 0.5479 0.4253
格式类似于这个
读取后存在50*50的 矩阵当中
并求出一个Z与这些数的差值的平方和最小(最小二乘法 ,选做,但可以追加分数 )
我要代码~~时间紧迫 展开
3个回答
展开全部
1、使用双层循环语句,就可以依次把数据顺序读入到一个二维数组当中了。
2、例程:
#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数组
printf("%d: ",i); //打印行号
//puts(arr[i]);
char *subarr = strtok(arr[i]," "); //以空格为分隔符从arr[i]中获得字串
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); //关闭指针
}
展开全部
#include "stdio.h"
int main()
{
double a[50][50]={0};
int i,j;
FILE *fp;
if((fp=open("data.txt","r"))==NULL)
{
printf("File open failed !\n");
return 1;
}
for(i=0;i<50;i++)//读取
for(j=0;j<50;j++)
fscanf(fp,"%lf",&a[i][j]);
for(i=0;i<50;i++)//显示
{
for(j=0;j<50;j++)
printf("%.4lf ",a[i][j]);
printf("\n");
}
fclose(fp);
}
只要能读到数据,其它操作就相对简单了。
int main()
{
double a[50][50]={0};
int i,j;
FILE *fp;
if((fp=open("data.txt","r"))==NULL)
{
printf("File open failed !\n");
return 1;
}
for(i=0;i<50;i++)//读取
for(j=0;j<50;j++)
fscanf(fp,"%lf",&a[i][j]);
for(i=0;i<50;i++)//显示
{
for(j=0;j<50;j++)
printf("%.4lf ",a[i][j]);
printf("\n");
}
fclose(fp);
}
只要能读到数据,其它操作就相对简单了。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可以用两个 for循环来读取
第一个for循环读取文本的行,第二个for循环来读取以“”分割的字符串的列
第一个for循环读取文本的行,第二个for循环来读取以“”分割的字符串的列
追问
需要详细代码
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询