Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2002
    Messaggi
    249

    [C++]Funzione itoa

    Ciao a tutti, sapreste dirmi se è disponibile il codice sorgente di questa funzione?
    Grazie

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Puo' differire leggermente a seconda delle implementazioni ... un esempio e' questo

    codice:
    char * __cdecl _itoa (int val, char *buf, int radix)
    { 
      if (radix == 10 && val < 0)
        xtoa((unsigned long)val, buf, radix, 1);
      else
        xtoa((unsigned long)(unsigned int)val, buf, radix, 0);
    
      return buf;
    }
    e la funzione xtoa e'

    codice:
    static void __cdecl xtoa (unsigned long val, char *buf, unsigned radix, int is_neg)
    {
      char *p;                /* pointer to traverse string */
      char *firstdig;         /* pointer to first digit */
      char temp;              /* temp char */
      unsigned digval;        /* value of digit */
    
      p = buf;
    
      if (is_neg)
      {
        /* negative, so output '-' and negate */
        *p++ = '-';
    
        val = (unsigned long)(-(long)val);
      }
    
      firstdig = p;           /* save pointer to first digit */
    
      do
      {
        digval = (unsigned) (val % radix);
    
        val /= radix;       /* get next digit */
    
        /* convert to ascii and store */
        if (digval > 9)
          *p++ = (char) (digval - 10 + 'a');  /* a letter */
        else
          *p++ = (char) (digval + '0');       /* a digit */
      } while (val > 0);
    
      /* We now have the digit of the number in the buffer, but in reverse
               order.  Thus we reverse them now. */
    
      *p-- = '\0';        /* terminate string; p points to last digit */
    
      do
      {
        temp = *p;
        *p = *firstdig;
        *firstdig = temp;   /* swap *p and *firstdig */
        --p;
        ++firstdig;         /* advance to next two digits */
      } while (firstdig < p); /* repeat until halfway */
    }

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2002
    Messaggi
    249
    Grazie!!
    Molto genitle!!

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.