使用fscanf和delimeter c扫描整数

时间:2015-12-07 16:58:33

标签: c scanf

我想将int存储到我的结构中的correctAnswer变量中,但它已保存为另一种类型,因此我希望将其与{{1}进行比较}。如何修改以下代码,以便将其另存为int

int

我想这应该是fscanf(file, "%[^;]", &questionArray[i].correctAnswer);

此外,确切地在"%d[^;]"保存了哪种数据类型?

关于分号,它是因为" correctAnswer"位于该行的末尾。

2 个答案:

答案 0 :(得分:1)

建议:

fscanf(file, "%d;", &questionArray[i].correctAnswer);

因为它会将数据读取为整数,并且还会使用尾随分号“;”

答案 1 :(得分:0)

首次使用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