fscanf用于多个值 - 无法使其工作

时间:2013-09-30 16:17:18

标签: scanf

我无法找到合适的样式来编写多个“%....”来工作。我正在读取格式为以逗号,分隔的数字块的文件,如:

913,91,011,3
391,391
04,111

940,1,999

它可以是1到3位数,逗号只是在同一行上的中间数字...它也可能是空的。我试着像这样阅读每一行:

res=fscanf(users,"%[^,\n]c%c",lockid,&temp2);

哪个应该带给我

lockid=913 (its char*)
temp2=',' or '\n' (its char)
and res=2 (int)

但我得到了lockid=913temp2根本没有变化(仍然未知)和res = 1

如果我把它分开:

res1=fscanf(users,"%[^,\n]3s",lockid);
res2=fscanf(users,"%c",temp1);

我得到了我想要的东西,但它花了我2行...为什么它不起作用? 它发生在我的所有fscanf中。你能告诉我写什么是正确的方法吗?我的老师说每个%之间应该没有任何内容 我在互联网上看到人们之间使用空间,所以我也尝试过,但仍然没有。 我也尝试fscanf(fp,"%d""%d",num1,num2),但同样的错误:num2没有收集第二个%d ...

这可能是它编译的方式还是什么? 我正在使用Visual Studio最新版本和C语言编写。

提前致谢!

1 个答案:

答案 0 :(得分:0)

我试过

int num;
char separaotor;
fscanf(fp, "%d%c", &num, &separator);

我得到了

  

num = 913
  separator =,

这是你想要做的吗?