【发布时间】:2020-11-13 04:03:27
【问题描述】:
我想知道是否有人可以解释为什么它读取零以及如何修复它
#include <stdio.h>
int main(void) {
FILE* f = fopen("text.json","r");
int l,x=0;
fscanf(f,"%d %d ",&l,&x);
printf("%d %d ",l,x);
return 0;
}
我的 text.json:
[ 1, 2, 3, 4 ]
运行时会打印两个 0。我真的不明白为什么或如何让它打印数字。
【问题讨论】:
-
man fscanf:
If processing of a directive fails, no further input is read。在您的情况下,%d告诉fscanf匹配一个整数作为下一个输入。由于下一个输入是[而不是整数,因此指令失败并且没有进一步的输入被读取。 -
试试
if (fscanf(f," [%d ,%d ,",&l,&x) == 2) success();。