char verbinden



  • Hallo!

    Ich möchte zwei char (zwei Buchstaben) zusammensetzen und als char* weiterverarbeiten. strcat() hat leider nicht funktioniert... Was muss ich tun?

    Danke für Eure Hilfe!

    Jörg



  • Ein char hat nur Platz für ein einzelnes Zeichen. Um mehrere Zeichen zu verarbeiten, brauchst du entweder char-Arrays oder std::string (ich empfehle letzteres).

    PS: Und die Stringverarbeitung aus C (strcat() und Kollegen) kommt nicht mit einzelnen char's zurecht, weil die nicht null-terminiert sind.



  • Und wie kriege ich die einzelnen chars in den char*?
    char* ist doch ein char-Array, oder bin ich gerade völlig verwirrt?



  • Nein, char* ist kein char-Array, sondern ein Zeiger, der (möglicherweise) auf ein char-Array zeigt. Und dessen Elemente könntest du über den Index-Zugriff ansprechen:

    char text[3];//zwei Zeichen + '\0'
    text[0]=first_char;
    text[1]=second_char;
    
    text[2]='\0';//Stringende-Marke
    


  • Danke!



  • oder du machst es mit _sntprintf ... nur halt als %c als formatidentifikator und dann noch als parameter mit das char übergeben ...



  • (D)Evil schrieb:

    oder du machst es mit _sntprintf ... nur halt als %c als formatidentifikator und dann noch als parameter mit das char übergeben ...

    Es geht noch umständlicher: Du könntest memcpy verwenden, um die Bytes einzeln zu kopieren. 😃



  • Ich habe es nicht getestet, aber ich glaube auch das du char 1 und char 2 mittels ## verketten kannst. Dann erhieltest du eine Ausgabe 2er Werte (z.B. 4 und 1 wird zu 41 - der Wert bleibt aber 4 und 1 und wird nicht zu 41!!!!) die du dann weiterverarbeiten kannst. Vielleicht hilft es ja weiter.



  • Ich habe es nicht getestet, aber ich glaube auch das du char 1 und char 2 mittels ## verketten kannst. Dann erhieltest du eine Ausgabe 2er Werte (z.B. 4 und 1 wird zu 41 - der Wert bleibt aber 4 und 1 und wird nicht zu 41!!!!) die du dann weiterverarbeiten kannst. Vielleicht hilft es ja weiter.



  • DerNameIstWichtig schrieb:

    Ich habe es nicht getestet, aber ich glaube auch das du char 1 und char 2 mittels ## verketten kannst.

    Der Operator funktioniert aber nur beim Präprozessor (in Makro-Definitionen) und nicht im normalen Code, also ist er hier wohl sinnlos.

    (und dadurch, daß du deine Beiträge verdoppelst, erhöhst du auch nicht deren Informationsgehalt ;))


Anmelden zum Antworten