CHAR -> INT INT -> CHAR



  • C++ Core schrieb:

    BlackViper schrieb:

    Am besten auch einen Befehl, mit dem ich den INT dann wieder in einen CHAR umwandeln kann!

    Wie lautet der (in C)?

    itoa



  • int a=36;
    char b;
    
    b = a;
    b = (char) a;     // falls das erste nicht akzeptiert wird..
    

    es liegt dann eben in der hand des programmierers, dass keine "falschen" werte auf a sind

    ich verwende djgpp nur selten, deshalb weiß ich leider nicht, ob man einen cast-operator benötigt(oder verwenden KANN). (VS6.0 )

    mfG (c)h

    PS.: char *itoa(int,char*,int);
    ich schätze das ist sowas wie "sprintf(...);", glaube aber, dass so ein befehl nicht gemeint war (sonst hätte man doch nach "atoi" gefragt 😉 )



  • Mit itoa kann man Zahlen zu einem Char konvertieren. Da es sich aber hier um die Ascii Werte handelt müsste ein cast nach char gemacht werden. Hab gestern anscheinend zu schnell durchgelesen 😃



  • In meinem Programm steht:

    #include <locale.h>
    #include <time.h>
    #include <math.h>
    #include <sys/stat.h>
    #include <sys/wait.h>
    #include <unistd.h>
    #include <stdlib.h>
    #include <string.h>
    #include <dirent.h>
    #include <cstdlib>
    #include <unistd.h>
    #include <stdio.h>
    #include <conio.h>
    #include <bios.h>
    #include <keys.h>
    #include <dos.h>
    #include <io.h>
    #include <pc.h>
    #include <iostream>
    int main()
    {
    int a=36;
    char b;
    
    b = (char) a;
    printf("%i -> %s\n", a, b);
    sleep(100);
    }
    

    Geht aber nicht!
    Ausgabe: "36 -> "!!!



  • int a = 36;
    
    printf("%i -> %c\n",a,(char)a);
    

    MfG SideWinder



  • @C++ core

    du könntest bzw. SOLLTEST nur die benötigten header verwenden! das spart Zeit und Speicherplatz.

    mfG (c)h



  • guenni81 schrieb:

    Mit itoa kann man Zahlen zu einem Char konvertieren. Da es sich aber hier um die Ascii Werte handelt müsste ein cast nach char gemacht werden.

    Ich glaube du verwechselst hier was. char ist ein Typ für ein einzelnes Zeichen, und den kannst du natürlich verwenden, um ein ASCII Zeichen darin zu speichern. Mit itoa wandelst du aber einen int Wert in einen String, und das ist immer noch etwas anderes als int -> char.



  • groovemaster schrieb:

    guenni81 schrieb:

    Mit itoa kann man Zahlen zu einem Char konvertieren. Da es sich aber hier um die Ascii Werte handelt müsste ein cast nach char gemacht werden.

    Ich glaube du verwechselst hier was. char ist ein Typ für ein einzelnes Zeichen, und den kannst du natürlich verwenden, um ein ASCII Zeichen darin zu speichern. Mit itoa wandelst du aber einen int Wert in einen String, und das ist immer noch etwas anderes als int -> char.

    So meinte ich das eigentlich 😉



  • ➡ SideWinder
    perfekt, das geht einwandfrei! 👍 👍 👍

    int a = 36;
    
    printf("%i -> %c\n",a,a);
    

    (Das char bei 2.Prarmeter braucht man nicht)



  • C++ Core schrieb:

    ➡ SideWinder
    perfekt, das geht einwandfrei! 👍 👍 👍

    int a = 36;
    
    printf("%i -> %c\n",a,a);
    

    (Das char bei 2.Prarmeter braucht man nicht)

    Sollte man aber trotzdem angeben! Schließlich geht printf() bei %c von nur 1 Byte aus und nicht von 2, 4 oder noch mehr.


Anmelden zum Antworten