Strings verknüpfen



  • Hi.
    Ich habe zwei strings

    char erster_string[30]
    

    und

    char zweiter_string[20]
    

    nun möchte ich die beiden + Text in einen neuen String einfügen.
    Also so etwas wie

    char string[80]
    string = erster_string + " hallo " + zweiter_string

    Wie geht das wirklich in C ?



  • Hallo Markus!

    Zunerst muß genug Speicher alloziert werden:

    char erster_string[30];
    char zweiter_string[20];
    
    erster_string=(char*)malloc(strlen(erster_string)+strlen("hallo")+strlen(zweiter_string)+1);
    /* +1 wegen '\0' */
    

    Dann mit strcat die string zusammenfügen:

    erster_string = strcat(erster_string, "hallo"); /* erster_string+hallo */
    erster_string = strcat(erster_string, zweiter_string); /* (erster_string+hallo)+zweiter_string */
    

    Gruß
    Michael



  • Moin!

    Das geht aber auch so:

    #include <stdio.h>
    
    int main ()
    {
    	char erster_string[] = "Ich bin ein String!";
    	char zweiter_string[] = "Ich bin auch ein String!";
    	char der_string[80];
    
    	sprintf(der_string, "%s Hallo! %s", erster_string, zweiter_string);
    
    	/* Nun ist der_string = "Ich bin ein String! Hallo! Ich bin auch ein String!" und wir können
    	ihn beispielsweise ausgeben: */
    
    	printf ("%s", der_string);
    
    	return 0;
    }
    

    Wie du vieleicht weißt, kann man mit sprintf(...) furchtbar gut Formatieren.

    Um es zu erklären (wenn du sprintf nicht kennst):
    sprintf(Wo-hinein, der Formatierte Text)
    printf(char * szFormat, ...) = sprintf(stdout, char * szFormat, ...)

    Hoffe, ich konnte dir weiterhelfen.



  • Hallo!

    Bei flyingCoder's Methode ist ein wenig Vorsicht geboten. Es könnte leicht ein 'buffer overflow' entstehen, wenn erster_string, "hallo" und zweiter_string zusammen größer sind als 80 Zeichen.

    Gruß
    Michael 🙂


Log in to reply