У меня возникают проблемы с использованием функции strsep()
в C. Я хочу разбить строку на две части. Строка содержит информацию о текущей воспроизводимой песне в формате ARTIST - TITLE
, поэтому художник и заголовок разделены одним пространством, одним тире и снова одним пространством. Я хочу отделить это от этого, «-». «-» не будет работать, потому что у некоторых художников есть тире в их имени.Функция strsep() - больше символов в разделителе
Когда я пытаюсь этот код, например, "Мишель Telo - Ai Se Eu Te Pego":
// String is in tmp
while ((token = strsep(&tmp, " - ")) != NULL)
{
printf("%s\n", token);
}
Я получаю это:
[[email protected] ~]# ./board
Michel
Telo
Ai
Se
Eu
Te
Pego
Вместо этого:
[[email protected] ~]# ./board
Michel Telo
Ai Se Eu Te Pego
Похоже, что strsep()
разделяет разделитель на 3 символа: "", "-", "" и используя OR между ними, но я хочу искать «-», как есть. Любая идея, как это исправить?
Аргумент разделителя для 'strsep', как и для' strtok', представляет собой список символов, которые считаются разделителями. –
Используйте 'strstr()' вместо этого и найдите появление точного '' - ''. –
[См. Здесь] (например, http://stackoverflow.com/questions/29847915/implementing-strtok-whose-delimiter-has-more-than-one-character/29848367#29848367). Я уверен, что на SO есть больше примеров реализации multi-char 'strtok'. –