2011-06-20 4 views
0

文字列を連結しているときに問題が発生しています。これは愚かな質問だと思いますが、回答が得られませんでした。なぜ投稿していますか?ソースコードは文字列を連結する際に不要な値を取得する

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); 
} 

バフ値を印刷した後、私は

{"category":"FMCG","amount":1500.00},{"category":"FMCG00"amount":1500.00},{"category":"FMCG00"amount":1500.00},{"category":"FMCG00"amount":1500.00} 

を取得していますされ

私が取得しています:"FMCG,FMCG00,FMCG00..."

これはなぜ起こるのでしょうか?私はFMCG ..にarr-10の値をハードコード化しました。事前に

おかげで....

+0

'buf'はどのように宣言されていますか? – sharptooth

+1

'buff'はどのように宣言されていますか?あなたがそれをオーバーランされている可能性は非常に高いです。 –

答えて

1

それが直接の理由だかどうかは知りませんが、確かにarr_12をオーバーランしています。サイズ5で定義した後、 "1500.00"と書きます。

0

おそらく、いくつかの変数(arr_12?)をオーバーランニングしている可能性があります。 snprintfでsprintfを変更しても問題はありません。

関連する問題