使用fscanf和delimeter c扫描整数



我想将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

最新更新