我正在尝试从文件中读取一行,我line
使用fgets
. 然后我尝试使用sscanf
它来解析它。有时我会打电话sscanf
发现它返回的参数数量错误。那么我会尝试重新解析相同的line
字符串。有时有效,有时无效(这让我相信问题不sscanf
在于我的代码中的其他问题)。这是我的意思的一个例子:
i = sscanf(line,"%d/%d/%d %d/%d/%d %d/%d/%d %d/%d/%d\n", &faceV1, &faceUV1, &faceN1, &faceV2, &faceUV2, &faceN2, &faceV3, &faceUV3, &faceN3,
&faceV4, &faceUV4, &faceN4);
if(i == 12) {
//We gotta quad...
printf("Model.c: Quads not supported\n");
} else if(sscanf(line,"%d/%d/%d %d/%d/%d %d/%d/%d\n", &faceV1, &faceUV1, &faceN1, &faceV2, &faceUV2, &faceN2, &faceV3, &faceUV3, &faceN3) == 9) {
//Doesn't do what I expect!
...
但是,如果我摆脱i = sscanf...
并检查i == 12
并直接进入if(sscanf(line,"%d/%d/%d %d/%d/%d %d/%d/%d\n", &faceV1, &faceUV1, &faceN1, &faceV2, &faceUV2, &faceN2, &faceV3, &faceUV3, &faceN3) == 9)
它将按预期工作。
那么回到这个问题的标题,我可以sccanf
在同一个字符串上多次调用吗?我叫错了吗?或者我应该在我的代码中的其他地方寻找问题吗?