gpt4 book ai didi

c - 从文本文件 C 中读取

转载 作者:行者123 更新时间:2023-12-04 05:15:25 24 4
gpt4 key购买 nike

我有一个 char 变量,它保存代表考试 ID 的数字(它是 char 因为它必须是 char)。我的文本文件如下所示:

5   1   Exam 1 (audit 31.10.)
6 1 Exam 2 (audit 23.10.)
14 1 Lab 01 (audit 21.11.)
16 1 Lab 02 (audit 28.11.)
...

每行中的第一个数字是考试 ID,第二个是该考试的最大分数,行中的其余文本是考试名称。我需要搜索examID匹配的文本,如果匹配,我需要在变量中存储最大点数和考试名称以备后用。这是我到目前为止:
char examName[100];
char tmp[100];
int examID;
int maxPoint=0;

FILE *fin=fopen("Exams.txt", "r");

while(fgets(tmp, sizeof(char)*100, fin)!=NULL) {
sscanf(tmp, "%d", &examID);
if(examID==s.examNum)
printf("%d", examID);
}

所以我找到了匹配并打印了它,没关系,但我不知道如何阅读第二个数字和考试名称。

最佳答案

你快到了:

sscanf(tmp, "%d %d %[^\n]", &examID, &maxPoint, examName); 
if(examID==s.examNum)
printf("%d %d %s\n", examID, maxPoint, examName);
fgets读全喜欢,然后 sscanf解析它作为格式字符串显示。所以如果你需要一个数字,然后是数字,然后是字符串(在这种情况下)你可以使用 "%d %d %[^\n]"
注:自 examName有空格(并且是换行符之前的文本文件的列表部分)我们使用否定扫描集告诉 sscanf “我想要所有东西,直到发现换行符存储为字符串”

旁注,初始化您的变量:
char examName[100] = {'\0'};
char tmp[100] = {'\0'};
int examID = 0;

关于c - 从文本文件 C 中读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14345873/

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