int number = 20;
char numstr[2]; // la stringa contenente i numeri da inviare
sprintf(numstr, "%d", number); //ti converte i numeri in una stringa
result = name + numstr; //ti concatena due stringhe
solo una piccola precisazione potresti spiegarmi in parole spicciole la riga 3? cosa serve "%d"?
un ultima precisazione... il risultato mi servirebbe in char.... come lo converto in char....? se non sbaglio c'è un metodo..ma nn ricordo quale..
grazi
char numstr[2]; // la stringa contenente i numeri da inviare
sprintf(numstr, "%d", number); //ti converte i numeri in una stringa
result = name + numstr; //ti concatena due stringhe
Occhio che devi sempre lasciare spazio per il carattere NULL (0x00) alla fine della stringa. Stampanto il numero 20 su un buffer di 2 byte vai a sovrascrivere l'ultima posizione, eliminando il terminatore di stringa.
Devi dichiarare numstr con dimensione di 3 o più byte.
I due buffer sono dichiarati di seguito, quindi le loro locazioni di memoria sono adiacenti. Dopo l'ultimo byte allocato per tooShortBuf si trova immediatamente il primo byte allocato per buf2.
La linea contrassegnata con (A) scrive i caratteri '1', '0', '0' .'0', 0x00 a partire dal primo byte allocato per tooShortBuf, ma poiché tale stringa è stata dichiarata di soli 3 byte, gli ultimi due finiscono in realtà "dentro" buf2.
Lo script evidenzia questa "invasione di campo" grazi all'inizializzazione di buf2 con caratteri tutti uguali. Dopo la sprintf su buf2, i primi due sono cambiati.