优化#include <stdio.h> // 函数extractDigit的功能:从文件a.txt中提取数值写入文件b.txt中 void extractDigit(); // 请在此添加代码,实现extractDigit函数 /********** Begin */ char read(FILE pi) { char c=fgetc(pi); if (c==EOF) { return EOF; } if (c<'0' || c>'9') { c=fgetc(pi); if (c==EOF) { return EOF; } } return c; } void extractDigit() { FILE fa; FILE fb; fa=fopen("a.txt","r"); fb=fopen("b.txt","w"); if (fa==NULL || fb==NULL) { return; } char c=read(fa); int num=0,k=0; while (c!=EOF) { num=num10+c-'0'; k++; if (k==3) { fprintf(fb,"%d",num); k=0; num=0; } c=read(fa); } if (k!=0) { fprintf(fb,"%d",num); } fclose(fa); fclose(fb); } / End **********/并写出代码
时间: 2024-03-06 15:48:56 浏览: 16
根据你提供的代码,我发现其中的FILE类型的参数传入了错误的类型,应该传入指向FILE类型的指针。此外,函数定义时应该加上参数的类型,否则默认是int类型。下面是优化后的代码:
```
#include <stdio.h>
char read(FILE *pi) {
char c=fgetc(pi);
if (c==EOF) {
return EOF;
}
if (c<'0' || c>'9') {
c=fgetc(pi);
if (c==EOF) {
return EOF;
}
}
return c;
}
void extractDigit() {
FILE *fa;
FILE *fb;
fa=fopen("a.txt","r");
fb=fopen("b.txt","w");
if (fa==NULL || fb==NULL) {
return;
}
char c=read(fa);
int num=0,k=0;
while (c!=EOF) {
num=num*10+c-'0';
k++;
if (k==3) {
fprintf(fb,"%d",num);
k=0;
num=0;
}
c=read(fa);
}
if (k!=0) {
fprintf(fb,"%d",num);
}
fclose(fa);
fclose(fb);
}
int main() {
extractDigit();
return 0;
}
```
以上是优化后的代码,加上了参数类型和指向FILE类型的指针。同时在main函数中调用了extractDigit函数来执行提取数值并写入文件的操作。