Strtok выводит только часть строки - PullRequest
0 голосов
/ 15 ноября 2018
#include <stdio.h>
#include <string.h>

int main(){
  char name[] = "eseumdesconhecidolheoferecerflores.issoeimpulse.cities";
  char *str;
  printf("%s\n", name)
  str = strtok(name, ".cities");
  printf("%s\n", str);
  return 0;
}

Это вывод:

eseumdesconhecidolheoferecerflores.issoeimpulse.cities
umd

Я понятия не имею, что вообще происходит. Я хочу, чтобы вывод strtok был указателем на "eseumdesconhecidolheoferecerflores.issoeimpulse"

1 Ответ

0 голосов
/ 15 ноября 2018

Аргумент разделителя для strtok - это строка, содержащая отдельные символы, используемые для разделения строки.

Вы указали разделители ., c, i, t, e и s.

Поэтому неудивительно, что для первого токена вывод равен umd, поскольку он окружен символами в строке разделителя.

Если выЕсли вы хотите найти всю строку, вы должны использовать strstr.

Например:

char name[] = "eseumdesconhecidolheoferecerflores.issoeimpulse.cities";
char *pos;

pos = strstr(name, ".cities");
if (pos)
{
    *pos = '\0';
    printf("%s\n", name);
}
...