Salve a tutti,
come da titolo ho uno strano comportamento della sprintf che sinceramente non riesco a capire, spero che qualcuno possa individuare un errore che non vedo.
Di seguito vi scrivo il codice
long int service_num = strtol(service_tag,NULL,10);
printf("\nAL_BP: %lu\n",service_num);
printf("\nAL_BP: %lu\n",getOwnNodeNbr());
sprintf(eidString, "%s:%lu.%lu",
CBHESCHEMENAME,getOwnNodeNbr(),service_num);
printf("\nAL_BP: %s\n",eidString);
CBHESCHEMENAME è una costante pari a "ipn"
getOwnNodeNbr() una funzione che ritorna un long int
service_tag è una stringa pari ad un numero, ex: "2000"
La cosa strana è che stampando singolarmente i due interi ottengo i corretti valori ( 2000 e 1), ma la concatenazione mi dà un risultato del tipo: "ipn:1.0"
Ho provato ad invertire i due long ed ottengo: ipn:2000.1
Ho fatto anche altre prove, addirittura impostando
long int service_num = 10;
ma sempre: "ipn:1.0"
invertendo ancora i due long ottengo la stringa corretta "ipn:10.1"
Non mi spiego da cosa potrebbe essere causato.
Qualcuno sa darmi un mano per favore ?
Grazie per l'attenzione