gpt4 book ai didi

c - 使用 fscanf(遵循特定模式)从文件中读取数据

转载 作者:太空宇宙 更新时间:2023-11-04 04:05:22 25 4
gpt4 key购买 nike

我正在尝试从一个文件中读入,但我无法获得正确的模式。谁能告诉我如何才能让它正常工作?

int main()
{

char name[20];
int age;
float highbp, lowbp, risk;
FILE *fp;
fp = fopen("data.dat", "r");

if(fp == NULL){

printf("cannot open file\n\n");

}

while(fscanf(fp, "name:%s\nage:%d\nbp:%f\nrisk:%f", name, &age, &highbp, &risk) != EOF){


}
printf("Name: %s\n", name);
printf("%d\n", age);
printf("%f\n", highbp);
printf("%f\n", risk);

}

数据.dat:

name:tom
age:32
bp:43.00
risk:0.0

最佳答案

如果它无法打开文件,它会打印一条消息,然后继续。相反,它应该从 main 返回。

if (fp == NULL) {
printf("cannot open file\n\n");
return 1;
}

fscanf 将返回解析的项目数,因此当返回的数字 < 4 时停止读取可能更安全(并非所有项目都可以读取)。

推测“data.dat”包含多条记录,每行都有一个行尾。这意味着在读取第一条记录后,文件中的下一个字符是“risk:0.0”行的结尾行。您应该以 \n 结束 fscanf 模板。

这是因为它第二次尝试解析文件时,fscanf 将看到它不期望的那个字符(fscanf 模板以“name:”开头),因此它将停止读取,您将得到只有第一条记录。

关于c - 使用 fscanf(遵循特定模式)从文件中读取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6637598/

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