#include <stdio.h>
#include <string.h>
int main() {
char *slogan = "together{kaliya} [namak]";
char *slow_gun = strdup(slogan);
char *token = strsep(&slow_gun, "{");
printf ("\n slow_gun: %s\n token: %s\n", slow_gun, token);
return 0;
}
когда я его выполняю:
$ cc -o try try_strsep.c
$ ./try
slow_gun: kaliya} [namak]
token: together
Но когда я меняю слоган char * на:
char *slogan = "kalia} [namak]";
и выполняю ту же программу:
$ vi try_strsep.c
$ cc -o try try_strsep.c
$ ./try
slow_gun: (null)
token: kalia} [namak]
Мой Вопрос , поэтому, когда я использую strsep (), а входная строка не имеет искомого шаблона, возвращаемое значение strsep () равно неправильно .Единственный способ проверить, не удалось ли strsep () найти шаблон, - это проверить if (slow_gun == NUll)
.
Если у меня char *slogan = "together{"
, то strsep
успешно вернет token
, но вернет slow_gun
впусто (не null
)
$ cc -o try try_strsep.c
$ ./try
slow_gun:
token: together
Есть ли способ, которым я мог бы избежать этой проверки IF и полагаться на функцию, чтобы вернуть мне substr, а если его нет, вернуть NULL
?