我想将int
存储到结构中的correctAnswer
变量中,但它被保存为另一种类型,因为我想进一步将其与int
进行比较。如何修改以下代码,使其保存为int
?
fscanf(file, "%[^;]", &questionArray[i].correctAnswer);
我想应该是"%d[^;]"
之类的。
此外,questionArray[i].correctAnswer
中究竟保存了什么数据类型?
关于分号,这是因为"correctAnswer"位于行的末尾。
建议:
fscanf(file, "%d;", &questionArray[i].correctAnswer);
因为这将以整数形式读取数据,并且还会使用尾部分号";"
首先使用fgets()
,文件输入更容易处理和检测问题。
用fgets()
读取行,然后进行解析。
// 1: Success - save number in an `int`
// O: Bad format
// EOF: No more data
int get_answer(FILE *file, int *x) {
char buffer[100];
if (fgets(buffer, sizeof buffer, file) == NULL) return EOF;
if (sscanf(buffer, "%*[^;];%d", x) == 1) return 1;
return 0;
}
"%*[^;]
读取并不保存除;
之外的任何字符。必须至少存在1个这样的字符才能进入下一步";"
读取且不保存';'
"%d"
读取并保存int