gpt4 book ai didi

c - 读取混合类型文件中的整数, "feof"不起作用

转载 作者:行者123 更新时间:2023-11-30 16:45:31 26 4
gpt4 key购买 nike

我的程序中出现错误(应该找到字符和整数文件中的所有整数),其中“feof”不起作用(while循环永远不会结束)或没有读取/找到整数,除非整个文件充满了整数。

我的代码...

 #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”,所以它算作 2。不确定如何标记为已解决或是否删除它。

 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

最佳答案

关于代码块:

while(!feof(rp))
{
if(isdigit(fgetc(rp)))
{
++result;
}

该代码块包含几个问题,包括格式不易于阅读。一些问题已在该问题的评论中详细说明。建议:

int ch;
while(EOF != (ch = fgetc(rp)) )
{
if(isdigit(ch))
{
++result;
}
}

请注意,这会计算每个数字,并且您说您只对整数感兴趣,整数可能是多个数字,因此您需要稍微修改建议的代码。我会让你做那个修改。

关于c - 读取混合类型文件中的整数, "feof"不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44091711/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com