[Anfänger] itoa Funktion, wo wird gespeichert??



  • Hallo,

    ich habe bisher im Studium (als ich angefangen hab) mal ein paar C-Grundlagen bekommen. Bis zu der Funktion itoa sind wir aber nicht gekommen.

    Jetzt mache ich gerade eine Hiwi Tätigkeit und habe ein ziemlich langes und kompliziertes C-File bekommen. Mein Betreuer hat keine Ahnung wie es funktioniert, will es aber wissen und hat keinen Bock es selbst zu machen
    --> Ergo: Ich mach es.

    Hab mir auch ein C-Buch mitgenommen aus der Uni, aber an einem Punkt komm ich jetzt nicht weiter.

    In dem C-Buch steht zur ITOA Funktion folgendes:

    ITOA: Eine Ganzzahl in einen String umwandeln
    BSP:

    char *itoa(int value, char *buf, int radix);
    

    Und als Erklärung:Die Funktion wandelt die Ganzzahl value in einen String um und speichert das ERgebnis in dem Puffer, auf den buf zeigt.

    Der Code aus dem File das ich habe schaut aber etwas anders aus:

    INT counter = 1;
    STRING testvalue[20];
    ...
    ...
    itoa(counter,&testvalue);
    

    Da ich schon länger nichts mehr mit C zu tun hatte bitte ich um etwas Nachsicht wenn meine Frage (eher Fragen, ich glaub bei 3000 Zeilen Quelltext werd ich noch öfter nachfragen müssen :() total naiv, dumm, hirnrissig und easy ist. Wäre schön wenn mir aber trotzdem wer helfen könnt.
    So: Was ist in dem 1. Code das RADIX? Brauch ich das?
    Also wird hier der Wert den counter gerade hat in einen String verwandelt. Und wenn ja, wie genau? Macht der einfach aus "1" eine "EINS" und schreibt das in die Variable?
    Und was auch wichtig für mich wäre ist zu wissen aus welchem Grund man eine Zahl in einen String umwandelt?

    Danke schonmal im Voraus, bitte so erklären, dass einer der Hello-World und ein bisschen mehr programmieren kann es versteht. 😃



  • Radix ist die Basis des Zahlensystems. Gewöhnlich 10 für Menschen. Da kann auch 16 stehen dann kommen Hexadezimalzahlen raus. Oder 2 für das Dualsystem.

    Zahlen werden im Rechner binär gespeichert. Damit du (Mensch) sie lesen kannst müssen sie in einen Text umgewandelt werden. Aus der Zahl 65 wird dann "65" (die Ziffern 6 und 5). Oder es kommt "41" als Hex-Zahl raus.

    itoa ist die Abkürzung für "Integer TO Ascii" 🙂



  • chgTUM schrieb:

    Bis zu der Funktion itoa sind wir aber nicht gekommen.

    Was ist denn das?



  • ok, danke schonmal. Hat mir schon weiter geholfen. Jetzt hab ich noch 2 Fragen.

    1. Das & - Zeichen brauch ich immer bei nem string, oder? Wenns ein int wäre in den was gespeichert wird, dann brauch ich den nicht. Ich glaub soweit kann ich mich erinnern

    2. Ich hab über die Uni die Möglichkeit MS Produkte kostenlos zu beziehen. Dazu hab ich mir Visal Studio 2010 geholt und installiert.
    Ich hab nur das Problem, dass das Ausgabefenster (also z.B. beim Hallo Welt Programm) kurz aufgeht und sofort wieder zu geht.
    Was kann ich da einstellen, dass es offen bleibt bis ich es schließe?



  • chgTUM schrieb:

    1. Das & - Zeichen brauch ich immer bei nem string, oder? Wenns ein int wäre in den was gespeichert wird, dann brauch ich den nicht. Ich glaub soweit kann ich mich erinnern

    Nein!
    Du kannst einem Integer oder float direkt etwas zuweisen. a = 3; pi = 3.141;
    Da es den Datentyp String in C nicht gibt ist es da anders.

    Das & ist (in deinem Bezug) der Adress-Operator. Den brauchst du wenn eine andere Funktion die Werte ändern soll.

    Bei Arrays (also auch Strings) ist die Adresse vom ersten Element &arrayname[0]
    Dafür kann man auch einfach nur arrayname schreiben.

    Nur sind Zuweisungen an Arrays nur bei der Deklaration möglich, z.B.:

    char text[] = "Hallo Welt!";
    


  • Damit sich das Fenster nicht schließt, kannst und sollst du den Debugger verwenden. Ausnahme ist, der Sinn des Programms ist es sich nicht zu beenden. Setze einfach einen Breakpoint auf die letzte Anweisung in main. Dazu klickst du auf die graue Leiste am linken Rand in der Zeile, oder nutzt das Kontextmenü.



  • Ich würde hier raten sich erstmal halbwegs C beizubringen (online Tutorial zB.).
    Zummindest bis Grundlagen wie Variablen, Arrays, Structs, Pointer usw. sitzen dann liest so ein Code sich auch gleich ganz anders 😉

    Die Seite hier könnte auch helfen:
    http://de.wikipedia.org/wiki/Datentyp



  • chgTUM schrieb:

    Hab mir auch ein C-Buch mitgenommen aus der Uni, aber an einem Punkt komm ich jetzt nicht weiter.
    In dem C-Buch steht zur ITOA Funktion folgendes:

    Da hast du wohl falsch gegriffen.
    itoa ist kein C-Standard, d.h. nachdem du evtl. mühsam versucht hast, die Funktion zu verstehen, kann es vorkommen, dass dein Testcompiler sich weigert itoa zu kennen.


Log in to reply