strtok in einer schleife / Problem



  • Hallo zusammen,

    habe hier einen kleinen Code der leider nicht macht, was ich möchte 😞

    Ich möchte eine Zeichenkette eingeben und diese dann per strtok am Leerzeichen trennen und in der schleife die einzelnen Wörter ausgeben .
    Kann mir jemand sagen, wo der Fehler liegt ?
    Bekomme derzeit immer nur das erste Wort ausgegeben !

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    int main(void)
    {
    	char befehle[100];
    	char *befehl1;
    
    	printf("Bitte geben sie die Suchwörter an \n");
    	scanf("%99s",befehle);
    
    	for( befehl1=strtok(befehle," ");befehl1;befehl1=strtok(0," ") ) 
    
    	{
    		printf("%s\n", befehle);
    
    		}
    
    	return 0;
    }
    

    Lieben Gruß



  • Hab es auch so probiert, aber selbes Problem:

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    int main(void)
    {
    	char befehle[100];
    
    	printf("Bitte geben sie die Suchwörter an \n");
    	scanf("%99s",befehle);
    
    	char *ptr;
    
    	ptr = strtok(befehle, " ");
    	while(ptr != NULL)
    
    	{
    		printf("%s\n",ptr);
    		ptr = strtok(NULL, " ");
    
    	}
    
    	return EXIT_SUCCESS;
    
    }
    

  • Mod

    Dein Problem ist nicht strtok, sondern die Eingabe. sscanf trennt bei %s die Eingabe nach Whitespaces, also unter anderem nach Leerzeichen. Benutze fgets um ganze Zeilen einzulesen.



  • deranfang schrieb:

    printf("%s\n", befehle);

    Richtig abschreiben solltest du aber auch als Anfänger schon können.

    printf("%s\n", befehl1);
    

    muss es natürlich heissen.


Anmelden zum Antworten