我在连接字符串时遇到了问题。我认为这是一个愚蠢的问题,但我不明白为什么我要发布here.Please answer.Thats me。
源代码是
unsigned char arr_25[] = "{\"category\":\"",
arr_10[]="FMCG",
arr_26[]="\"amount\":",
arr_11[]="\",",
arr_12[]="1000",
arr_13[]="}";
float amount=1500,totamount=2500;
for(i=0;i<=count;i++)
{
if(i>0)
strcat(buff,",");
strcat(buff,arr_25);
strcat(buff,arr_10);//I am getting unnecessary value while printing this arr_10
strcat(buff,arr_11);
strcat(buff,arr_26);
memset(arr_12,0,sizeof(arr_12));
sprintf(arr_12,"%.2f",amount);
printf("\n the amount is %s \n",arr_12);
strcat(buff,arr_12);
strcat(buff,arr_13);
}在打印buff值之后,我得到
{"category":"FMCG","amount":1500.00},{"category":"FMCG00"amount":1500.00},{"category":"FMCG00"amount":1500.00},{"category":"FMCG00"amount":1500.00} 我得到了:"FMCG,FMCG00,FMCG00..."
为什么会发生这种情况?当我将arr-10值硬编码为FMCG时?
提前感谢....
发布于 2011-06-20 15:17:04
我不知道这是否是直接原因,但您肯定是在超载arr_12。您已经将其定义为大小为5,然后将"1500.00“写入其中。
发布于 2011-06-20 16:43:22
您可能超出了某些变量(arr_12?)。用snprintf更改sprintf,应该不会有问题。
https://stackoverflow.com/questions/6407837
复制相似问题