gpt4 book ai didi

c - 如何修复此代码中的 C 文件数据读取

转载 作者:行者123 更新时间:2023-11-30 20:09:23 25 4
gpt4 key购买 nike

我无法理解代码中的错误。此代码中没有输出。错误是什么?

检查了 .dat 文件,它包含数据。

代码:

#include <stdio.h>

int main()
{
FILE *patPtrR;
char name[50];
int pCount,i,c[8];
float total,avg;

patPtrR = fopen("count.dat","r");

if (patPtrR == NULL)
{
printf("\nError..\n");
return -1;
}

fscanf(patPtrR, "%s %d %d %d %d %d %d %d %d", name,c[0],c[1],c[2],c[3],c[4],c[5],c[6],c[7]);

printf("%s",name);

while (!feof(patPtrR))
{
for(i=0;i<8;i++)
{
total += c[i];
}
avg = total /8.0;

printf("Name: %s\n",name);

if (avg < 20)
printf("Severe dengue\n");
else if (avg > 20 && avg < 50)
printf("Moderate denge\n");
else if (avg > 50 && avg < 100)
printf("Mild dengue\n");

fscanf(patPtrR,"%s %d %d %d %d %d %d %d %d",name,c[0],c[1],c[2],c[3],c[4],c[5],c[6],c[7]);
}


fclose(patPtrR);
return 0;
}

这段代码有什么问题。我无法得到任何输出。B 部分没有输出。
需要将结果与名称一起输出。b 部分没有输出

最佳答案

这里没有什么问题。

  1. fscanf 需要指针(int * 在您的情况下)来读入,但您正在传递 int

  2. 不要使用 while (!feof(patPtrR)) (( Why is “while ( !feof (file) )” always wrong? )) 而是可以在 中检查 fscanf 的返回值while 循环。

  3. 您没有在 while 循环中重置总计

    patPtrR = fopen("count.dat","r");

    if (patPtrR == NULL)
    {
    printf("\nError..\n");
    return -1;
    }

    while (9 == fscanf(patPtrR, "%s %d %d %d %d %d %d %d %d",
    name,&c[0],&c[1],&c[2],&c[3],&c[4],&c[5],&c[6],&c[7]))
    {
    total = 0; // Reset the total
    for(i=0;i<8;i++)
    {
    total += c[i];
    }
    avg = total /8.0;

    printf("Name: %s\n",name);

    if (avg < 20)
    printf("Severe dengue\n");
    else if (avg > 20 && avg < 50)
    printf("Moderate denge\n");
    else if (avg > 50 && avg < 100)
    printf("Mild dengue\n");

    }

    fclose(patPtrR);

关于c - 如何修复此代码中的 C 文件数据读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52753982/

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