Получение ненужного значения при объединении строк - PullRequest
0 голосов
/ 20 июня 2011

У меня проблема при объединении строк. Я думаю, что это глупый вопрос, но я не получил ответа. Вот почему я пишу здесь. Пожалуйста, помогите мне.

Исходный код

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

Заранее спасибо ....

Ответы [ 2 ]

1 голос
/ 20 июня 2011

Я не знаю, является ли это прямой причиной, но вы определенно обгоняете arr_12.Вы определили его размером 5, а затем в него пишете «1500.00».

0 голосов
/ 20 июня 2011

Вы, вероятно, превышаете некоторые переменные (arr_12?). Измените sprintf с помощью snprintf, и у вас не должно возникнуть проблем.

...