69,336
社区成员
发帖
与我相关
我的任务
分享
//文件1:
//编号12 23 34;
//文件2:
//编号 x y z
//1 3.45 4.2 3.6
//2 2.45 4.2 3.6
// ........
//277 4.00 8.38 9.92
//278 5.00 8.38 9.92
#include <stdio.h>
FILE *f1,*f2,*f3;
char ln[80];
int r,n,n2,n21;
float x,y,z;
int xyz_of_line(int nn,float *xx,float *yy,float *zz) {
n2=-1;//跳过第一行:编号 x y z
rewind(f2);
while (1) {
if (NULL==fgets(ln,80,f2)) break;
n2++;
if (n2==nn) {
r=sscanf(ln,"%d%f%f%f",&n21,xx,yy,zz);
if (4==r) {
if (n21==nn) {
return 1;
} else {
printf("WARNING:编号 error in line %4d:%s",nn,ln);
return 1;
}
} else {
printf("ERROR:Format error in line %4d:%s",nn,ln);
return 0;
}
}
}
return 0;
}
void main() {
f1=fopen("文件1","r");
if (NULL==f1) {
printf("ERROR:fopen 文件1 error!\n");
return;
}
f2=fopen("文件2","r");
if (NULL==f2) {
fclose(f1);
printf("ERROR:fopen 文件2 error!\n");
return;
}
f3=fopen("文件3","w");
if (NULL==f3) {
fclose(f2);
fclose(f1);
printf("ERROR:fopen 文件3 error!\n");
return;
}
while (1) {
r=fscanf(f1,"%d",&n);
if (1==r) {
r=xyz_of_line(n,&x,&y,&z);
if (1==r) {
printf("%4d:x=%g,y=%g,z=%g\n",n,x,y,z);
fprintf(f3,"%4d:x=%g,y=%g,z=%g\n",n,x,y,z);
} else {
printf("ERROR:Can not read line %4d!\n",n);
}
} else if (0==r) {
fgetc(f1);
} else break;
}
fclose(f3);
fclose(f2);
fclose(f1);
}