繁体   English   中英

使用fscanf和delimeter c扫描整数

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM