第1个回答 2010-08-31
自己试试看,下午无聊给你做了一下,我在linux下面跑起来是可以的
完全满足你的最终要求,忽略掉了行号,记录真实数据到二维数组
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int localize(char *buf);
void linechg(double *dest, char *sour);
main()
{
FILE *f1;
int i=0,j=0,k=0,len_f1;
double dest[100];
char sour[100];
double SIMUL[100][100];
f1=fopen("k2","rt");//改为你自己的路径
if(f1==NULL)
{
printf("Fail to open the source file!\n");
return 2;
}
while(1){
if(fgets(sour,100,f1)==NULL)
return 1; //input complete
else
{
linechg(dest, sour);//做单行的处理
strncpy(SIMUL[i],dest,5);
printf("\n");
}
}
fclose(f1);
for(i=0;i<5;i++)
printf("%lf",SIMUL[i]);
return 0;
}
/*
定位空格(实际上就是定位下一个浮点数起始位置)*/
int localize(char *buf)
{
int i;
for(i=1;i<1024;i++)
{
if(buf[i]==' ')
break;
else if((buf[i]=='\n')||(buf[i]==EOF))//analyse completely
{
i=0;
break;
}
}
return i;
}
void linechg(double *dest, char *sour)
{
int i=1,j=0,k=0;
for(k=0;k<5;k++)
{
i=localize(sour+j);
if(i==0) break;
j+=i;//current new location
dest[k]=strtod(sour+j,NULL);
printf("%lf ",dest[k]);
}
}
第2个回答 2010-08-31
我只能基本上推翻你写的所有程序了,因为你没有实际进行剔除第一个数的操作
#include <stdio.h>
int main(int argc, char *argv[])
{
double SIMUL[100][100];
char line[1000];
int i = 0;
int trush; //用于存放每行第一个数,但没有实际作用
FILE *Fsimul = NULL;
if((Fsimul = fopen("D:\\GLUE\\0818.txt","rt")) == NULL)
return -1;
while ( fgets(line, 1000, Fsimul) != NULL )
{
sscanf(line, "%d %lf %lf %lf %lf %lf", &trush, &SIMUL[i][0], &SIMUL[i][1], &SIMUL[i][2], &SIMUL[i][3], &SIMUL[i][4]);
//根据你写的部分程序来看,每行都是有固定的5个数需要录入到数组中,那么这样用sscanf会方便很多
i++; //每行录入完毕后自加进入下一行的录入
}
return 0;
}
第3个回答 推荐于2016-08-23
#include<stdio.h>
#include<string.h>
#include <stdlib.h>
int main()
{
FILE *fp;
int i = 0;
double data[100][5];
char str[100];
fp = fopen("F:/112.txt", "r"); //打开文件
if (!fp)
return -1;
while (!feof(fp)) // 读取数据
{
fgets(str, 100, fp);
strtok(str, " ");
for (int n = 0; n < 5; n++) // 截取数据
data[i][n] = atof(strtok(NULL, " "));
i++;
}
fclose(fp);
for (int r = 0; r < i; r++) // 打印数据
{
for (int n = 0; n < 5; n++)
printf("%lf ", data[r][n]);
printf("\n");
}
}
第4个回答 2010-08-30
文本文件中的数据格式如果能自己控制, 并且是固定的话, 完全可以通过#include, 让编译器来帮你读入....