Strano comportamento della sprintf

di il
1 risposte

Strano comportamento della sprintf

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

1 Risposte

  • Re: Strano comportamento della sprintf

    Per capire il problema il codice deve essere completo di dichiarazione di buffer, variabile e tutto quello che serve (ad esempio, eidString cosa è ?)

    In ogni caso ti faccio notare che tu chiami due volte la funzione getOwnNodeNbr e può darsi che restituisca due valori diversi ...
Devi accedere o registrarti per scrivere nel forum
1 risposte