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..."

なぜこれが発生するのですか?arr-10の値をFMCGにハードコーディングしたので..?

前もって感謝します....

4

2 に答える 2

1

それが直接的な理由かどうかはわかりませんが、あなたは確かにオーバーランしていますarr_12。サイズ 5 で定義してから、「1500.00」と書き込みます。

于 2011-06-20T07:17:03.867 に答える
0

おそらくいくつかの変数をオーバーランしています(arr_12?)。sprintfをsnprintfに変更すれば、問題は発生しないはずです。

于 2011-06-20T08:43:22.027 に答える