zahl in zeichenkette und umgekehrt



  • hallo

    ich wollt nur gern wissen wie man eine zahl in einen string und umgekehrt konvertiert.
    ich möchte gern wissen wie funktionen wie atoi und itoa realisiert sind.
    "benutzte sprintf - einen stringstream - oder so" - helfen mir nicht weiter!
    ich möchte wissen wie diese funktionen implementiert sind ...
    also kurz gesagt wie die konvertierung ansicht stattfindet ...
    danke



  • char number[32]
    int n = 12345;
    sprintf( number, "%d", n );
    n = atoi( number );
    


  • danke erstmal. aber ich weiss wie man sprintf und co benutzt.
    ich wollt wissen wie die funktionen funktionieren ...

    z.B.:

    void sprintf() {

    //das was ich wissen will ....

    }



  • Dann schau dir doch einfach die Header files an, wo die Funktionen deklariert sind. 😮 😉



  • eek schrieb:

    Dann schau dir doch einfach die Header files an, wo die Funktionen deklariert sind. 😮 😉

    Ja, da steht ja soviel Coding drin 🙄

    @fragensteller
    Wie das ganze implementiert ist, bleibt meistens Geheimnis der Compilerhersteller. Aber du kannst dich ja mal dran versuchen es nachzuprogrammieren, wie du meinst, dass es gehen könnte.



  • hab ich schon probiert ... und bin kläglich gescheitert ...
    und in den header files steht es auch nich drin ...

    aber danke ... hat denn keiner einen hinweis ???



  • Folgende Lösungsansätze:

    1- Bei den meisten Compileren ist die Source der Runtimelibrary mit dabei.
    2- Da es eine Funktion aus der Runtime Library jedes C.compilers ist kann mann z.B bei Linux unter den Compilersourcen nachsehen oder
    3- in der MSDN
    4- oder einfach mal googlen oder
    5- suche Sourcefourge.
    6- Oder einen im Debugger in die Funktion hineinste

    👍



  • #include <ctype.h>
    
    long
    my_atoi (const char *str)
    {
      long val=1;
    
      while(isspace(*str)) str++;
    
      if(*str=='-') { val=-1; str++; }
      if(*str=='+') str++;
    
      while(isdigit(*str))
      {
        val=10*val+str-'0';
        str++;
      }
    
      return val;
    }
    

Anmelden zum Antworten