#include <stdio.h>
int main() {
double a;
char b[32];
scanf("%31[^,] %lf", b, &a);
printf("%s, %lf", b, a);
return 0;
}
字符串b
已正确存储,但变量a
未正确存储。我怎么了?
答案 0 :(得分:2)
更改此:
scanf("%31[^,] %lf", b, &a);
对此:
scanf("%31[^,], %lf", b, &a);
因为格式%31[^,]
会读取直到逗号,但已注释,不会读取逗号本身。因此,您需要添加一个逗号。
这也解释了为什么b
会按预期填充,因为它是第一个要填充的变量。问题在逗号后开始,这说明了为什么“ a
变量未正确存储”。
正如@pmg所评论的那样,您应该检查一下匹配数,在您的情况下为2。使用您的代码,您将从该方法中获得非预期的返回值,并意识到格式存在问题。示例:
if (scanf("%31[^,], %lf", b, &a) != 2)
/* error */;