【发布时间】:2014-02-26 19:04:49
【问题描述】:
举个例子
int i=10,j;
float b=3.14,c;
char str[30];
sprintf(str,"%d%f",i,b);
sscanf(str,"%d%f",&j,&c);
printf("%d ----- %f\n",j,c);
输出:- 103 ----- 0.1400000
如您所见,最初是 i=10 和 b=3.14。
我想要 j=10 和 c=3.14 使用 sprint() 和 sscanf()。
我面临的问题是编译器分配了j=103 和c=0.140000。
有什么办法可以解决sscanf()这个问题?
【问题讨论】:
-
加一个空格:将
sprintf(str,"%d%f",i,b)改为sprintf(str,"%d %f",i,b)。 -
替代方案:打印
b及其符号sprintf(str,"%d%+f",i,b);。回扫时,该标志将充当分隔符。 (尽管添加空间是最好的)