String Splitten?



  • strtok, zerstört aber den (Gesamt)String, ist nicht reentrant und ignoriert Leerfelder.
    Alternativen sind strtok_s (C11), strtok_r (POSIX), strsep (GNU).

    Beispiel aus dem Standard:

    #include <string.h>
                static char str[] = "?a???b,,,#c";
                char *t;
                t   =   strtok(str, "?");         //   t   points to the token "a"
                t   =   strtok(NULL, ",");        //   t   points to the token "??b"
                t   =   strtok(NULL, "#,");       //   t   points to the token "c"
                t   =   strtok(NULL, "?");        //   t   is a null pointer
    

  • Mod

    LuckyChicken schrieb:

    SeppJ schrieb:

    Die optimale Lösung hängt davon ab, was du hinterher damit machen möchtest. Aber ich sage mal strtok als Stichwort für den Anfang.

    Codebeispiel?

    Google?



  • SeppJ schrieb:

    LuckyChicken schrieb:

    SeppJ schrieb:

    Die optimale Lösung hängt davon ab, was du hinterher damit machen möchtest. Aber ich sage mal strtok als Stichwort für den Anfang.

    Codebeispiel?

    Google?

    Bereits bei Google nach Beispielen geguckt aber keins hat funktioniert?



  • LuckyChicken schrieb:

    SeppJ schrieb:

    LuckyChicken schrieb:

    SeppJ schrieb:

    Die optimale Lösung hängt davon ab, was du hinterher damit machen möchtest. Aber ich sage mal strtok als Stichwort für den Anfang.

    Codebeispiel?

    Google?

    Bereits bei Google nach Beispielen geguckt aber keins hat funktioniert?

    Fehlermeldungen? 😉



  • Techel schrieb:

    LuckyChicken schrieb:

    SeppJ schrieb:

    LuckyChicken schrieb:

    SeppJ schrieb:

    Die optimale Lösung hängt davon ab, was du hinterher damit machen möchtest. Aber ich sage mal strtok als Stichwort für den Anfang.

    Codebeispiel?

    Google?

    Bereits bei Google nach Beispielen geguckt aber keins hat funktioniert?

    Fehlermeldungen? 😉

    Ja. Fehlermeldungen.


  • Mod

    LuckyChicken schrieb:

    Techel schrieb:

    LuckyChicken schrieb:

    SeppJ schrieb:

    LuckyChicken schrieb:

    SeppJ schrieb:

    Die optimale Lösung hängt davon ab, was du hinterher damit machen möchtest. Aber ich sage mal strtok als Stichwort für den Anfang.

    Codebeispiel?

    Google?

    Bereits bei Google nach Beispielen geguckt aber keins hat funktioniert?

    Fehlermeldungen? 😉

    Ja. Fehlermeldungen.

    Aha.





  • So wie's aussieht willst du das Leerzeicne unberücksichtigt lassen. Wenn man den Ursprungsstring zerstören darf, dann würd ich's so machen, vorausgesetzt die Anzahl der maximalen Unterteilungen steht vorher fest:

    char		dein_text[256], *text[128], *search;
    	int		i = 0;
    
    	strcpy(dein_text, "Hello Wolrd 123!");
    	search = dein_text;
    	text[i++] = search;
    	while(search = strchr(search, ' ')){
    		*search = '\0';
    		search++;
    		text[i++] = dein_text;
    		if(i == sizeof(text){
    			printf("Array zu klein\r\n");
    			break;
    		}
    	}
    //ab hier kannst auf text[0] etc zugreifen und weiter verarbeiten
    

    Wenn die maximale Anzahl der Unterteilungen vorher nicht feststeht, kannst du einen Leerdurchlauf machen und die Zahl der notwendigen Unterteilungen zählen, dann den notwendigen Speicher mit malloc erstellen und genau da weitermachen wie ich's vorgeschlagen habe.



  • ah fehler im code

    search++;
    		text[i++] = dein_text;
    

    muss so heissen:

    search++;
    		text[i++] = search;
    


  • Okay den Code probier ich mal


Anmelden zum Antworten