1个回答
展开全部
没有万能的通用程序能做到你的要求。
因为“特定字符”可能是很奇怪的字符或控制字符,另外文件中字符的序列和组合千变万化。
所以只能针对具体的文件形式做具体处理。
例如,
读下面的文件a.txt:
axsdA1.23, 11A5.45e02, XSSA-7.88,
999A987, iikA0, llllLA3.333333
取出A后面的double型数据并求和。
完整程序如下:
#include <stdio.h>
main(){
FILE *fin;
double x[50],y[50],z[50],sum=0.0;
int i,n=0;
fin=fopen("a.txt","r");
while(1){
if ( fscanf(fin,"%*[^A]A%lf",&x[n]) != 1) break; // 窍门在此
n++;
if (n>=50) break;
}
for (i=0;i<n;i++) {
printf("%lf\n",x[i]);
sum=sum+x[i];
}
printf("sum=%lf\n",sum);
return 0;}
输出:
1.230000
545.000000
-7.880000
987.000000
0.000000
3.333333
sum=1528.683333
因为“特定字符”可能是很奇怪的字符或控制字符,另外文件中字符的序列和组合千变万化。
所以只能针对具体的文件形式做具体处理。
例如,
读下面的文件a.txt:
axsdA1.23, 11A5.45e02, XSSA-7.88,
999A987, iikA0, llllLA3.333333
取出A后面的double型数据并求和。
完整程序如下:
#include <stdio.h>
main(){
FILE *fin;
double x[50],y[50],z[50],sum=0.0;
int i,n=0;
fin=fopen("a.txt","r");
while(1){
if ( fscanf(fin,"%*[^A]A%lf",&x[n]) != 1) break; // 窍门在此
n++;
if (n>=50) break;
}
for (i=0;i<n;i++) {
printf("%lf\n",x[i]);
sum=sum+x[i];
}
printf("sum=%lf\n",sum);
return 0;}
输出:
1.230000
545.000000
-7.880000
987.000000
0.000000
3.333333
sum=1528.683333
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询