【发布时间】:2021-09-22 17:39:09
【问题描述】:
我有一个名为 question.txt 的 .txt 文件,其中包含以下格式的多项选择题和多个答案:
**X question content
# Answer 1
# Answer 2
...
# Answer n
- X 是一个整数(问题所在章节的编号)
- n 小于或等于 5
我正在尝试提取关于章节号 (X) 的信息、问题内容和所述问题的答案,并将它们存储到一个结构变量中,就像这样
struct {
int chapter;
int qcontent[512];
char answer[5][256];
}
以下是我的尝试,我想知道是否有不同的方法,也许是更紧凑的方法?
#include <stdio.h>
typedef struct {
int chapter;
char qcontent[512];
char answer[5][256];
} question;
int main()
{
question question[100];
FILE *fp = fopen("question.txt", "r");
char fline[512];
int i = -1; // Count question
int j = 0; // Count answer in a question
while (!feof(fp)) {
fgets(fline, 512, fp);
fline[strlen(fline) - 1] = 0;
if (strstr(fline, "**")) {
++i;
question[i].chapter = fline[2] - '0';
strcpy(question[i].qcontent, fline + 4);
j = 0;
}
if (strstr(fline, "#")) {
strcpy(question[i].answer[j++], fline + 2);
}
}
return 0;
}
【问题讨论】:
-
question结构中没有group成员。你的意思是question[i].chapter? -
fline[2] - '0'如果章节号可以超过 1 位数,则将不起作用。 -
你缺少
},所以你在循环中有return 0;,它在处理文件的第一行后返回。