如何从未知文件中读取,包括数字、字母和符号?

How to read from unknown file including numbers, letters, and symbols?

提问人:Lucas 提问时间:1/12/2015 最后编辑:DeduplicatorLucas 更新时间:12/11/2015 访问量:116

问:

你怎么能读懂一个行长未知的文件(大约 1500 行,所以不需要 malloc/alloc 等,因为内存足够了......幸运的是,因为我还不理解那些数组/指针命令)包括浮点数、符号和字母,从中提取特定的数字,进行一些计算并将它们写回另一个文件中?

三行示例:

02060    6.1   0.15 K14C9 134.52612  339.34971  209.27800    6.93836  0.3820989  0.01956864  13.6383665  0 MPO319108  1304  45 1895-2014 0.53 M-v 38h MPCLINUX   000A   (2060) Chiron             20141030
05145    7.1   0.15 K14C9  90.96884  354.94362  119.25398   24.73205  0.5736395  0.01074547  20.3385073  0 MPO169571   319  21 1977-2009 0.58 M-v 38h MPCMEL     400A   (5145) Pholus             20090418
07066    9.6   0.15 K14C9  67.95075  170.25614   31.23622   15.65639  0.5195581  0.00813869  24.4774642  1 MPO135426   105   9 1993-2004 0.48 M-v 38h MPCW       400A   (7066) Nessus             20040526
C printf fopen scanf feof

评论

0赞 Lucas 1/12/2015
FILE *f,*g; f = fopen("MPCORB_Distant.txt","r"); g = fopen("MPCORB_Distant_AvgKBOValues.txt","w"); double Nbr,H,G,Epoch,M,w,W,i,e,n,a,UP,Ref,Obs,Opp,Arc,rms,Pert1,Pert2,Comp,Type,Name,LastObs; double Res_a,Res_e,Res_i,Res_W,Res_w; int c; while ((c = fgetc(f)) != EOF) { fscanf(f,"%lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf\n",&Nbr,&H,&G,&Epoch,&M,&w,&W,&i,&e,&n,&a,&UP,&Ref,&Obs,&Opp,&Arc,&rms,&Pert1,&Pert2,&Comp,&Type,&Name,&LastObs); fprintf(g,"%.8lf %.8lf %.8lf %.8lf %.8lf\n",w,W,i,e,a); } fclose(f); fclose(g);怎么了?
0赞 Lucas 1/12/2015
在比较开头问题中的代码和示例行时,我需要的值完全正确。我确实看到了其中一些值,但打印的行中大多是重复的,也有一些任意数字。

答:

0赞 broadmonkey 1/13/2015 #1

欢迎!包含现有代码总是一个好主意,因此感谢您这样做。然而,将其视为问题的一部分会有所帮助。您能否编辑问题以包含您的代码,并很好地格式化它?

我看到的一个问题是在调用中正确使用格式字符串。您始终指定,但这仅适用于值,并且还需要分析整数和字符串。fscanf()%lfdouble