C- Dzielenie stringa na cześci

C- Dzielenie stringa na cześci
0

Mam do podzielenia string na pojedyncze wyrazy gdy wystąpią takie znaki jak:

  • spacja
  • przecinek
  • kropka

Mam działający kod, najprostszy chyba jaki może być, który działa dla JEDNEGO z wybranych znaków.

Kopiuj
#include <stdio.h> 
#include <string.h> 

int main()
{
char tekst[100]; 
char *pojedynczy_wyraz; 

gets(tekst); 

pojedynczy_wyraz = strtok(tekst, " "); 

while(pojedynczy_wyraz!=NULL)
{
  printf("%s\n", pojedynczy_wyraz); 
  pojedynczy_wyraz = strtok(NULL, " "); 
} 

return 0; 
}
 

Podany wyżej kod działa dla wszystkich wyżej wymienionych znaków ale nie chce działać gdy chcę by działał dla nich naraz.
Tzn. działa dla pojedynczo wybranych znaków, natomiast np. dla dwóch już nie.

Kopiuj
#include <stdio.h> 
#include <string.h> 

int main()
{
char tekst[100]; 
char *pojedynczy_wyraz; 

gets(tekst); 

pojedynczy_wyraz = strtok(tekst, " "); // dla spacji
pojedynczy_wyraz = strtok(tekst, "."); // dla kropki


while(pojedynczy_wyraz!=NULL)
{
  printf("%s\n", pojedynczy_wyraz); 
  pojedynczy_wyraz = strtok(NULL, " "); 
  pojedynczy_wyraz = strtok(tekst, "."); 
} 

return 0; 
}
 

Co robię nie tak ?

HF
  • Rejestracja:ponad 12 lat
  • Ostatnio:ponad 6 lat
  • Postów:17
0

Kłania się korzystanie z dokumentacji: http://www.cplusplus.com/reference/cstring/strtok/ . Według niej, możesz umieścić kilka znaków, które będą delimiterami - wystarczy upakować je obok siebie w stringu. Dodatkowo możesz użyć pętli do-while zamiast while, aby kod był czytelniejszy.

edytowany 1x, ostatnio: hfaua
satirev
  • Rejestracja:prawie 14 lat
  • Ostatnio:około 4 lata
0

Przeanalizuj przykład.

Kopiuj
 char input[] ="Prosty,sucharny przyklad.Dzieli stringa.";
 char *token;
 token = strtok(input," ,.");
 while(token != NULL)
 {
   printf("%s\n", token);
   token = strtok(NULL, " ,.");
 }
edytowany 1x, ostatnio: satirev
0

Faktycznie, dokumentacja na to zezwala, co mnie trochę zaskoczyło. Dzięki!

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.