#include<stdio.h> void main() { //---------------错误开始-------------- FILE fp; long cnt=0; char c,filename[20]; void createfile(); createfile(); scanf("%s",filename); fp=fopen(filename,"w"); while(feof(fp)) //---------------错误结束-------------- { c=fgetc(fp); if(c>='0'&&c<='9') cnt++; } printf("%ld",cnt); fclose(fp); }
时间: 2023-08-15 20:25:44 浏览: 97
在这段代码中,有几个错误需要修正:
1. `FILE fp` 应该改为 `FILE *fp`,即文件指针类型,因为 `fopen()` 函数返回的是文件指针。
2. `createfile()` 函数没有声明,在 `main()` 函数前面应该加上函数声明 `void createfile();`。
3. `while(feof(fp))` 这个循环条件不正确,因为 `feof()` 函数在文件末尾才返回真。应该改为 `while((c = fgetc(fp)) != EOF)`,即读取文件中的每一个字符,直到读到文件末尾。
下面是修改后的代码:
```
#include <stdio.h>
void createfile();
int main() {
FILE *fp;
long cnt = 0;
char c, filename[20];
createfile();
printf("请输入文件名:");
scanf("%s", filename);
fp = fopen(filename, "r");
if (fp == NULL) {
printf("打开文件失败");
return 1;
}
while ((c = fgetc(fp)) != EOF) {
if (c >= '0' && c <= '9')
cnt++;
}
printf("数字的个数为:%ld", cnt);
fclose(fp);
return 0;
}
void createfile() {
FILE *fp;
fp = fopen("test.txt", "w");
fputs("1234abc5678def", fp);
fclose(fp);
}
```
这段代码的功能是读取用户输入的文件名,打开该文件并计算其中数字字符的个数。同时在程序开始时会自动生成一个名为 `test.txt` 的文件,用于测试。
阅读全文