[英]Scanning an integer using fscanf and delimeter c
我想将一个int
存储到我的struct中的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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.