你这个基础,给你做了,后面也接不下去,因为读进来的数据根本不是你想象的那样放置。先把基础打好吧,总是临急抱佛脚不行的。那些人平时教他,又不肯好好学,教他多走一步就嫌啰嗦,不见踪影,到出事就再来等靠要,我没按坛柜直接删贴锁贴已经非常仁慈了,宠坏了那些人。
[ 本帖最后由 TonyDeng 于 2015-9-12 11:53 编辑 ]
[ 本帖最后由 TonyDeng 于 2015-9-12 11:53 编辑 ]
授人以渔,不授人以鱼。
#include<stdio.h> #include<ctype.h> #include<stdlib.h> #include<math.h> #include<string.h> #include <stdlib.h> //===============================数据格式结构 struct DATA { DATA(); DATA(char *charnumber); void DataOutput(); double number[3]; }; DATA::DATA() { } DATA::DATA(char *charnumber) { number[0]=0; number[1]=0; number[2]=0; if(strlen(charnumber)!=0) { char numbermark =0; //0=整数部分 !0=小数部分 char witchnumber =0; //哪一个数字 0 1 2 三种情况 double littlenumber[11]={0,1e-1,1e-2,1e-3,1e-4,1e-5, 1e-6,1e-7,1e-8,1e-9,1e-10}; for(int i=0;charnumber[i]!='\0';i++) { if(witchnumber>2){continue;} if(charnumber[i]=='.'){numbermark=1;continue;} if(charnumber[i]==' '||charnumber[i]=='\t'){numbermark=0;witchnumber++;continue;} if(charnumber[i]<'0'||charnumber[i]>'9'){continue;} if(numbermark==0) { number[witchnumber]*=10; number[witchnumber]+=(charnumber[i]-'0'); } else { number[witchnumber]+=(charnumber[i]-'0')*littlenumber[numbermark++]; } } } } void DATA::DataOutput() { printf("%f %f %f\n",this->number[0],this->number[1],this->number[2]); } //=============================== //===============================声明一个文件类 class TXTFILE { public: TXTFILE(char *txtfilepath); ~TXTFILE(); void changefiletodata(DATA *data); int getlengthdata(); private: FILE *txtfilepoint; }; //=============================== //===============================构造函数定义 TXTFILE::TXTFILE(char *txtfilepath) { txtfilepoint = fopen(txtfilepath,"r"); if(txtfilepoint==NULL) { printf("open %s error!\n",txtfilepath); exit(0); } } //=============================== //===============================析构函数定义 TXTFILE::~TXTFILE() { fclose(txtfilepoint); } //=============================== //===============================文件转数据函数定义 void TXTFILE::changefiletodata(DATA *data) { char c2[100]="\0"; int datanumber; char c1; for(datanumber=0,rewind(txtfilepoint);(c1=getc(txtfilepoint))!=EOF;) { if(c1=='\n') {data[datanumber]=DATA(c2);c2[0]='\0';datanumber++;continue;} char c3[2]; c3[0]=c1;c3[1]='\0'; strcat(c2,c3); } } //=============================== int TXTFILE::getlengthdata() { int datanumber; char c1; for(datanumber=0,rewind(txtfilepoint);(c1=getc(txtfilepoint))!=EOF;) { if(c1=='\n') {datanumber++;} } return datanumber; } int main(void) { int datanumber=0; DATA *data; TXTFILE txtfile("7300.txt"); datanumber=txtfile.getlengthdata(); data = new DATA[datanumber]; txtfile.changefiletodata(data); for(int i=0;i<datanumber;i++) { data[i].DataOutput(); } system("pause"); return 0; }