polecam użyć strchr() - jest bardzo szybki, aby znaleźć znaki w ciągi
#include <string.h>
..
char str[] = "swerwer werwerur y";
char *p1 = NULL,*p2 = NULL;
p1 = strchr(str,' ');
p1++;
p2 = strchr(p1,' ');
if(p2) *p2 = 0;
printf("found: %s\n", p1);
jeśli masz wiele ograniczników, można użyć strtok_r() lub strpbrk(), jak w poniższym przykładzie:
char str[] = "swerwer ., werwerur + y";
const char *dlms = " .,+";
char *p1 = NULL,*p2 = NULL;
p1 = strpbrk(str,dlms);
while(strchr(dlms,*p1)) p1++;
p2 = strpbrk(p1,dlms);
if(p2) *p2 = 0;
printf("found: %s\n", p1);
(kod powinien oczyszczania: w przypadku, gdy strpbrk zwraca NULL)
Łańcuch może mieć dowolną długość, więc 'strtok()' może być nieefektywne. – httpinterpret
@ httpinterpret Czego naprawdę chcesz? Nie jestem magikiem z liniowym poszukiwaniem. – WhirlWind
To znaczy, że nie ma potrzeby, aby tokenizować cały ciąg znaków, ponieważ zależy mi tylko na dwóch pierwszych. – httpinterpret