sscanf读取()中的字符串

时间:2011-04-07 03:19:07

标签: c string scanf

这几天这个问题困扰着我。 我想读一个字符串,例如,输入=(-0.001999,-0.919191,-0.777777,999999.999999) 使用sscanf。我的代码是

char x[10], y[10], z[10], angle[10];
sscanf( input+1, "%[^,],%[^,],%[^,],%[^)]", &x, %y, &z, &angle);
printf("%s %s %s %s\n", x, y, z, angle);

预期结果是x = -0.001999 y = -0.919191 z = -0.777777 a = 999999.999999

但我的printf显示:x = -0.001999 y = -0.919191 z = 999 a = 999999.999999

有人可以帮我找出问题所在吗?

THX!

3 个答案:

答案 0 :(得分:1)

角度不足以容纳输入数据,因此z被覆盖。试试这个:

char x[80], y[80], z[80], angle[80];

答案 1 :(得分:1)

修复奇数缓冲区溢出后,我得到:

char input[] = "(-0.001999,-0.919191,-0.777777,999999.999999)";
char x[10], y[10], z[10], angle[14];
sscanf( input+1, "%9[^,],%9[^,],%9[^,],%13[^)]", x, y, z, angle);
printf("%s %s %s %s\n", x, y, z, angle);

我得到的输出是:

-0.001999 -0.919191 -0.777777 999999.999999

答案 2 :(得分:0)

你的sscanf应该是sscanf( input+1, "%[^,],%[^,],%[^,],%[^)]", x, y, z, angle);,因为你的数组已经是指针(并且y在你的例子中有%)。另一个响应者已经解决了根本问题。