Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 12 su 12
  1. #11
    Utente di HTML.it
    Registrato dal
    Dec 2004
    Messaggi
    286
    Originariamente inviato da ESSE-EFFE
    Un'altra possibilità (da testare bene) potrebbe essere la seguente:
    Bene, mi piace, oggi avevo provato ad adoperare un puntatore a puntatore, ma non ho avuto successo, sicuramente per la mia poca esperienza nell'uso di puntatori a puntatori.
    Questa sera testerò il tuo codice e poi ti farò sapere. ...

  2. #12
    Utente di HTML.it
    Registrato dal
    Dec 2004
    Messaggi
    286
    Eccomi, l'ho provata e va alla perfezione, produce eccezzione in caso in cui il valore da valutare sia negativo (d'altra parte deve essere unsigned) e in caso di overflow se eccede il valore massimo del tipo unsigned __int32 che è 4,294,967,295.

    codice:
    short UInt32ToStr(unsigned int i, char **const p, short lmax)
    {
    	short n = 0;
    	*p += (lmax - 1);
    	**p = '\0';
    
    	do
    	{
    		*(--(*p)) = '0' + (i % 10);
    		n++;
    	}
    	while ( (i /= 10) != 0);
    
    	return n;
    }

    Alla chiamata:

    codice:
    #define UI32STR_ROOM 11	// 10 cifre + il teminatore della stringa.
    
    //...
    	short nChars = 0;
    	unsigned int iVal = 1895417692;
    	char str[UI32STR_ROOM];
    	char *pStr = str;
    
    	nChars = UInt32ToStr(iVal, &pStr, UI32STR_ROOM);
    Ho fatto qualche piccola modifica ma entrambe le versioni (questa e quella postata da ESSE-EFFE) hanno lo stesso identico comportamento. Ringrazio tutti ed in particolare oregon che coglie sempre nel segno e ESSE-EFFE che mi ha suggerito una elegante soluzione.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.