Array verknüpfen mit Leerzeichen



  • Hi,
    versuche zwei Arrays(die Inhalte) in einer neuen Variable zu kopieren
    und dazwischen soll ein Leerzeichen vorhanden.
    Ich habe alles versucht, irgendwie kann man das letzte Zeichen /0 nicht überschreiben, so dass es nicht funktioniert.
    (Ohne strcat zu verwenden)

    char voller_name[40];
    char  vorname[20] = {"Muster"};
    char nachname[20] = {"Mann"};
    

    Als Ergebnis soll "voller_name = Muster Mann" rauskommen..
    Hat jemand eine Idee, wie man es realisieren kann?

    PS: Ich habe mit einer Schleife versucht, Array zu Array in "voller_name" einzufügen, was auch nicht klappte.
    Entweder wird es zusammengesetzt angezeigt oder dazwischen wird irgendein Symbol eingefügt.

    Danke



  • char voller_name[40];
    char  vorname[20] = {"Muster"};
    char nachname[20] = {"Mann"};
    
    strcpy(voller_name,vorname);
    strcpy(&voller_name[strlen(voller_name)+1],nachname);
    voller_name[strlen(voller_name)]=' ';
    


  • ohne strcpy etc. zu verwenden 😉
    trotzdem danke


  • Mod

    dslpro schrieb:

    ohne strcpy etc. zu verwenden 😉
    trotzdem danke

    Dann schreib dir ein eigenes strcpy. Eine unoptimierte Version ist bloß eine einzeilige Schleife. Ebenso strlen.



  • dslpro schrieb:

    ohne strcpy etc. zu verwenden 😉
    trotzdem danke

    Wer lesen kann, ist klar im Vorteil. Du schriebst strcat und nicht strcpy.
    Scheint auch wieder bloß eine sinnlose Grundschulenlehreraufgabe zu sein.



  • void MyStrcpy(char *dst, const char *src)
    {
    	for ( ; *src; ++src, ++dst)
    		*dst = *src;
    
    	*dst = 0;
    }
    

  • Mod

    Buuuuuuuuuuuuuuuh schrieb:

    [...]

    Falls dein Nutzername sich auf meinen Einzeilerkommentar bezieht:

    void MyStrcpy(char *dst, const char *src)
    {
      while(*dst++=*src++);
    }
    

    Kurz genug? 🙂

    P.S.: Jedoch hat strcpy eigentlich noch eine Kopie von dst als Rückgabewert, wodurch man wohl nicht um ein paar Ausdrücke mehr herum kommt.



  • Mein Name bezog sich eher auf die Reaktion des Threaderstellers. Das es noch kürzer geht war mir bewusst, aber ich wollte dem Threadersteller zumindest die Chance geben es zu verstehen.



  • Vielleicht auch:

    char voller_name[40];
    char  vorname[20] = {"Muster"};
    char nachname[20] = {"Mann"};
    
    sprintf(voller_name,"%s %s", vorname, nachname);
    

    Wenn das nicht auch "verboten" ist.


Anmelden zum Antworten