我很确定这正是你想要的。我对算法所做的唯一修改是%
在格式字符串中添加前导空白清除。另外,我修改了它以从命令行 arg 打开文件。这样更容易测试。希望没问题。
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
if (argc != 2)
return EXIT_FAILURE;
FILE *fp = fopen(argv[1], "r");
if (NULL == fp)
return EXIT_FAILURE;
char str[100];
int count=0;
while (1)
{
if(fscanf(fp, " %[^,],", str) != 1)
break;
printf("%s\n", str);
++count;
}
printf("Parsed %d strings.", count);
return EXIT_SUCCESS;
}
输出
Name 1
Name 2
Name 3
Parsed 3 strings.
我相信您所看到的循环中的“第四次”执行是失败条件,它由于无法解析而中断循环,除非我遗漏了某些内容或不理解您所看到的内容。