我正在尝试使用fgetc()
函数逐个字符地读取文本文件,但是不显示任何输出。这是一个学校项目,它仍然以非常非常简单的方式来测试程序的功能。
#include <stdio.h>
#include <stdlib.h>
void fn1(FILE *f);
void fn9(FILE *fp, char, char);
int main() {
FILE *fp = fopen("text.txt", "r");
if (fp == NULL) {
perror("Error: ");
exit(1);
}
fn1(fp);
fn9(fp, '0', '9');
fclose(fp);
return 0;
}
void fn1(FILE *f) {
int num, sum = 0, count = 0;
while (fscanf(f, "%d", &num) == 1) {
if (num > 0) {
sum += num;
count++;
}
}
printf("the avg of positive nums is %.2f", (float) sum / count);
}
void fn9(FILE *fp, char m, char n) {
int ch;
int count1 = 0, count2 = 0;
while ((ch = fgetc(fp)) != EOF) {
if (ch == m)
count1++;
if (ch == n)
count2++;
printf("%c", ch);
if (ferror(fp))
break;
}
printf("\n%c is seen %d times", m, count1);
printf("\n%c is seen %d times", n, count2);
fclose(fp);
}
我测试的文件内容是:
90
16
-34
100
答案 0 :(得分:0)
返回fn(fp)后,fp将指向文件中的最后一个位置。在调用fn9之前,需要将其重置为文件的开头。使用fseek将fp指向文件的开头,它应该可以工作:)