int in char umwandeln?

  • Hallo!

    Wie wandle ich ein int in ein char, und umgekehrt in C, um? (OS Windows)
    In google findet sich eine atoi funktion, die aber nicht funktioniert. Außerdem beziehen sich die meisten google Ergebnisse auf die umwandlung innerhalb einer printf - funktion.

    lg alex

  • Ich hoffe, ich übersehe da keine Bibliotheksfunktion, mir ist aber keine bekannt.
    Du kannst ohnehin nur die Ziffern 0-9 in char umwandeln. Du könntest also den ASCII-Wert für '0' nehmen und einfach deine Zahl addieren (aufpassen, dass der int nicht größer als 9 ist), dann hast ein char.

  • char to int kann folgendes heißen:

    • Zwischen einer (!) Dezimaliffer und der dazugehörigen Zahl soll konvertiert werden, also '0' <-> 0, ..., '9' <-> 9. (Dafür einfach '0' addieren oder subtrahieren.)
    • Zwischen einem String (!), der eine Zahl in dezimaler (oder sonstiger) Darstellung codiert, soll konvertiert werden, also etwa "123" <-> 123. (Für die eine Richtung gibt es sprintf und Freunde, für die andere strtol und Freunde.)
    • Zwischen einem Zeichen und dem (ASCII-)Zeichencode dieses Zeichens soll umgewandelt werden, z.B. '0' <-> 48. (Dafür gibt es einfache Zuweisungen.)


    Eventuell lassen sich auch andere plausible Interpretationen von "char to int" finden. Ist deine gewünschte dabei? Falls nicht, bitte näher und mit Beispielen erläutern.


    Edit: OK, es ist also offenbar der zweite Punkt gemeint. Nimm die erwähnten Bibliotheksfunktionen; itoa ist nicht Standard und wird nicht auf allen Plattformen zur Verfügung stehen.

  • aeh, denken alle zu kompliziert oder willst du einfach nur das machen:


    int i = 42;
    char c = (char)i;
    i = (int)c;


    Sollte - teilweise - aber eh implizit vom compiler gemacht werden, dass: i = c; auch klappen sollte.


    EDIT: aso, wenn wirklcih int-> char* gemeint ist, dann mach ich es meist mit sprintf(buf, "%d", int_var); aber weiss nicht wie weniger effizient wie itoa es ist.

  • Quote from sommeralex

    Wie wandle ich ein int in ein char, und umgekehrt in C, um? (OS Windows) In google findet sich eine atoi funktion, die aber nicht funktioniert.


    inwiefern funktioniert sie nicht? ich bin sicher, die funktionen in der c-library funktionieren alle recht gut ;)


    für integer -> string würde ich snprintf verwenden:


    C
    1. #include <stdlib.h>
    2. #include <stdio.h>
    3. ...
    4. int i=5;
    5. char buffer [255];
    6. snprintf (buffer, [color=Red](size_t)255, [/color]"%d", i);


    (eigentlich sollte man hier noch den rückgabewert prüfen, denn sonst könnte es bei zu vielen eingabezeichen sein, dass das abschließende \0 fehlt)


    für string-> integer:


    Code
    1. #include <stdlib.h>
    2. ...
    3. const char* szText = "2";
    4. int i = strtol (szText, (char*)0, 10);


    lg michi

  • Quote from MaxAuthority

    aso, wenn wirklcih int-> char* gemeint ist, dann mach ich es meist mit sprintf(buf, "%d", int_var); aber weiss nicht wie weniger effizient wie itoa es ist.


    uje uje, solltest unbedingt snprintf verwenden!
    ahja, und der syntax ist snprintf(char * str, size_t size, const char * format, ...);, also net die size vergessen :)

    [font=verdana,sans-serif]"An über-programmer is likely to be someone who stares quietly into space and then says 'Hmm. I think I've seen something like this before.'" -- John D. Cock[/font]


    opentu.net - freier, unzensierter Informationsaustausch via IRC-Channel!
    Hilfe und Support in Studienangelegenheiten, gemütliches Beisammensein, von und mit Leuten aus dem Informatik-Forum!

  • Quote from hal

    uje uje, solltest unbedingt snprintf verwenden!
    ahja, und der syntax ist snprintf(char * str, size_t size, const char * format, ...);, also net die size vergessen :)


    danke, habs ausgebessert..


    lg michi