2011-06-20 1 views
0

Je reçois problème lors de la concaténation des chaînes.Je pense que c'est la question stupide, mais je n'ai pas eu de réponse.C'est pourquoi je poste ici.S'il vous plaît Aidez-moi.Obtention de valeur inutile tout en concaténant des chaînes

Le code source est

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

Après avoir imprimé la valeur buff je reçois

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

Je reçois: "FMCG,FMCG00,FMCG00..."

Pourquoi cela se produit? Comme je ai codé dur valeur d'arr-10 à FMCG ..?

Merci à l'avance ....

+0

Comment 'buf' est-il déclaré? – sharptooth

+1

Comment "buff" est déclaré - il est tout à fait possible que vous le dépassiez. –

Répondre

1

Je ne sais pas si c'est la raison directe, mais vous êtes certainement. arr_12 ROUE LIBRE Vous l'avez défini avec la taille 5, puis vous écrivez "1500.00" dedans.

0

vous êtes probablement dépassant certaines variables (arr_12?). Changez sprintf avec snprintf et vous ne devriez pas avoir de problèmes.

Questions connexes