Buchstaben bei einem char* anhängen



  • Wie hänge ich ohne die Standartfunktionen wie sprintf einen Buchstaben an ein char* an?



  • Gar nicht. char*-Strings haben eine feste Größe.



  • Mit strcat bzw. der sichereren Variante strncat.



  • RobthaR schrieb:

    Wie hänge ich ohne die Standartfunktionen wie sprintf einen Buchstaben an ein char* an?

    Da dies hier ein C++-Forum ist: benutz die Klasse std::string und die Standardfunktionen.

    Ansonsten wird es aufwendig:

    size_t string_length(char const* str)
    {
        size_t len = 0;
        for (; *str != '\0'; ++str, ++len);
        return len;
    }
    
    char* append(char const* str, char ch)
    {
        size_t len = string_length(str);
        char* new_str = new char[len + 2];
        for (char* i = new_str; *str != '\0'; ++i, ++str)
            *i = *str;
        new_str[len] = ch;
        new_str[len + 1] = 0;
        return new_str;
    }
    
    int main()
    {
        using namespace std;
    
        char text[] = "Hallo";
        cout << string_length(text) << endl;
    
        char* new_text = append(text, 's');
        cout << new_text << endl;
        cout << string_length(new_text) << endl;
        delete [] new_text;
    }
    

    (Ungetestet!)



  • Konrad Rudolph schrieb:

    Ansonsten wird es aufwendig:

    gar nicht. geht auch einfach:

    void append (char *str, char c)
    {
      while (*str)
        str++;
      *str++ = c;
      *str = 0;     
    }
    

    musste nur sicherstellen dass noch platz für das zeichen da ist 😉



  • net schrieb:

    Konrad Rudolph schrieb:

    Ansonsten wird es aufwendig:

    gar nicht. geht auch einfach:
    [...]
    musste nur sicherstellen dass noch platz für das zeichen da ist 😉

    Eben. Das ist ja das aufwendige daran.


Anmelden zum Antworten