如何修复此代码中的 C 文件数据读取
How to fix C file data reading in this code
我无法理解代码中的错误。
此代码中没有输出。什么错误。
检查了 .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 部分没有输出
这里没有什么问题。
fscanf
需要指针(int *
在你的情况下)读入但你正在传递 int
.
不要使用 while (!feof(patPtrR))
((Why is “while ( !feof (file) )” always wrong?)) 而是可以检查 while
循环中 fscanf
的 return 值.
您没有在 while 循环中重置 total
。
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);
我无法理解代码中的错误。 此代码中没有输出。什么错误。
检查了 .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 部分没有输出
这里没有什么问题。
fscanf
需要指针(int *
在你的情况下)读入但你正在传递int
.不要使用
while (!feof(patPtrR))
((Why is “while ( !feof (file) )” always wrong?)) 而是可以检查while
循环中fscanf
的 return 值.您没有在 while 循环中重置
total
。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);