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!
答案 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在你的例子中有%)。另一个响应者已经解决了根本问题。