用C++读取文件中数据。求助、求助各位c语言大神。。
数据格式如图片所示,我写的程序如下:程序编译没有错误,但是运行时没有反应,不知道问题出在哪里。求助各位大神。#include<stdio.h>#include<stdli...
数据格式如图片所示,我写的程序如下: 程序编译没有错误,但是运行时没有反应,不知道问题出在哪里。求助各位大神。#include<stdio.h>#include<stdlib.h> #include<conio.h>void main(){ int su=1916; float kp[][4]={0.}; FILE *fin,*fw; int i,j,n=0,c,L=0; fpos_t pos; fin=fopen("e:\\33.txt","r"); fw=fopen("e:\\myprocedure\\point2.txt","w"); if(!fin) { printf("can't open file merge.txt\n"); } while(1) { n=2;L++; kp[L][0]=(float)L; while(1) { fgetpos (fin,&pos); while((c=fgetc(fin))==' '){}; if(c=='\n') break; else fsetpos (fin,&pos); if((fscanf(fin,"%9.6f",&kp[L][n]))==EOF) goto Lab1; n++; } }Lab1: fclose(fin); for(i=1;i<=su;i++) { for(j=1;j<5;j++) { printf("%9.6f ",kp[i][j]); fprintf(fw,"%9.6f ",kp[i][j]); } fputs("\n",fw); } fclose(fw);}
展开
展开全部
借着你的帖子重学下C的文件读读写,看你的代码是要将33.txt文件的三维坐标读出来,加个序号,写到point2.txt文件中是吧?居然还用到了goto,下面写了个代码,可以运行的,这个代码为了获取行数,对文件读了2遍,如果你事先知道行数就不需要这么写了,或者在源文件中把行数写在前面,就不用读2遍了,其实获取行数的根本原因是你为什么要把数据存进kp数组呢?如果不是必须的,那就定义3个变量就可以了,不需要数组。以下是代码:
#include <stdio.h>
int main() {
char s[50];
FILE *fileR=fopen("e:\\33.txt","r");//定义要读取的文件
FILE *fileP=fopen("e:\\point2.txt","w");//定义要写出的文件
if(fileR==NULL){
printf("要读取的文件未找到。\n");
}else if(fileP==NULL){
printf("写出的文件未创建。\n");
}else{
//获取文件行数
int rown,i;
char rs[100];
rown=0;
while(fgets(rs,100,fileR))
++rown;
printf("文件行数:%d\n",rown);
rewind(fileR);//将文件指针移回文件头
//定义数组
float kp[rown][4];
for(i=0;i<rown;++i){
kp[i][0]=i;
//将数据读入数组
fscanf(fileR,"%f %f %f",&kp[i][1],&kp[i][2],&kp[i][3]);
printf("%2.0f %10.6f %10.6f %10.6f\n",kp[i][0],kp[i][1],kp[i][2],kp[i][3]);
//将数据写入文件
fprintf(fileP,"%2.0f %10.6f %10.6f %10.6f\n",kp[i][0],kp[i][1],kp[i][2],kp[i][3]);
}
fclose(fileR);
fclose(fileP);
}
return 0;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询