我在我的程序中遇到了错误(应该找到所有整数和字符和整数的文件),其中“feof”不起作用(而循环永远不会结束)或没有整数被读取/找到,除非整个文件是充满整数。
我的代码...
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
int main(void)
{
FILE *ptr;
int val;
int i = 0;
char myChar;
int chc;
int result = 0;
ptr = fopen("stuff.txt", "w");
if(ptr == NULL)
{
printf("Could not open file \n");
}
for(; i < 5; ++i)
{
printf(" Char(0) or int(1)? ");
scanf("%d", &chc);
if(chc == 0)
{
printf(" Enter a char: ");
scanf(" %c", &myChar);
fprintf(ptr, " %c \n", myChar);
}
else
{
printf(" Enter an int: ");
scanf("%d", &val);
fprintf(ptr, " %d \n", val);
}
}
fclose(ptr);
FILE *rp;
rp = fopen("stuff.txt", "r");
if(ptr == NULL)
{
printf("Could not open file \n");
}
else
{
while(!feof(rp))
{
if(isdigit(fgetc(rp)))
{
++result;
}
}
}
printf(" Total numbers in file: %d\n", result);
return 0;
}
编辑:
我忘了重新添加“int result”,这是一个新错误。可能像有人提到的那样与 fgetc 有关。我得到一个额外的加到我的总数中。
已解决:我将 34 读作“3”和“4”,所以它算作两个。不确定如何标记为已解决或是否删除。
Char(0) or int(1)? 0
Enter a char: e
Char(0) or int(1)? 1
Enter an int: 34
Char(0) or int(1)? 0
Enter a char: p
Char(0) or int(1)? 0
Enter a char: d
Char(0) or int(1)? 0
Enter a char: u
Total numbers in file: 2