gpt4 book ai didi

c - 如何将文本文件数据显示为变量?

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

我正在使用 C 编程语言。我有一个包含这样数据的文本文件

4,艾哈迈德,7.54

7,穆罕默德,9.50

逗号分隔值,我的问题是我想将这些数据放入变量中,如下所示:

编号:4

姓名:艾哈迈德

等级:7.54

这将针对文本文件中的所有记录,我没能解决这个问题,你能帮我吗?

这是我的代码:

#include <stdio.h>

typedef struct student {
int id;
char name[300];
float grade;
} Student;

int main() {
Student s;
char line[128];
FILE *fp;
fp = fopen("student.txt","a+");
scanf("%d",&s.id);
scanf("%s",&s.name);
scanf("%f",&s.grade);
fprintf(fp,"%d,%s,%.2f\n",s.id,s.name,s.grade);
fclose(fp);
fp = fopen("student.txt","r");
if(fp != NULL) {
while(fgets(line, sizeof line,fp) != NULL) {
if(fputs(line,stdout) == ',')
break;
else
printf("ID: %d",fputs(line,stdout));
printf("NAME: %s",fputs(line,stdout));
printf("GRADE: %.2f",fputs(line,stdout));
}

fclose(fp);
}
else {
perror("student.txt");
}
return 0;
}

最佳答案

fscanf 的这种格式将扫描一个整数、一个逗号、所有不是逗号的东西、另一个逗号和一个 float 。如果扫描了三个项目,则循环继续。

    while((fscanf (fp, "%d,%299[^,],%f", &s.id, s.name, &s.grade)) == 3) {
printf("ID: %d\n",s.id);
printf("NAME: %s\n",s.name);
printf("GRADE: %.2f\n",s.grade));
}

另一种选择是使用 fgets 和 strtok() 将行分成逗号上的标记。

关于c - 如何将文本文件数据显示为变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29734607/

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