此代码符合你的要求:
#include
#include
#include
int main(){
FILE *fp;
char line[1000];
char wLine[1000];
double SIMUL[100][100];
int lineCount = 0;
char *delim=" ";
int ii,jj;
fp = fopen("1.txt","r");
if( fp==NULL){
printf("fopen error!\n");
return -1;
}
memset(line,0x00,sizeof(line));
while(fgets(line,1000,fp)!=NULL){
strtok(line,delim);
for(ii=0;ii<5;ii++){
SIMUL[lineCount][ii] = atof(strtok(NULL,delim));
}
lineCount++;
}
fclose(fp);
//则扮陆打印结果
for(ii=0;ii
printf("孙顷%f ",SIMUL[ii][jj]);
}
printf("缺芦\n");
}
return 0;
}
自己试试看,下午无聊给你做了一下,我在linux下面跑起来是可以的
完全满足你的最终要求,忽略掉了行御型号,记录真实数据到二维数组
#include
#include
#include
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]);
}
}
我只能基本上推翻你写的所有程序了,因为你没有实际进行剔除第一个数的操作
#include
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;
}
#include
#include
#include
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");
}
}
文本文件中的没册做数据格式如果能自己控制, 并姿键且是固定的话, 完全可以通过#include, 让编译器枯衡来帮你读入....