#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 *slogan на:
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
Есть ли способ избежать этой проверки ЕСЛИ и полагаться на функцию, которая вернет мне подстроку, а если ее нет, вернет NULL
?
free
строку, возвращеннуюstrdup
- person Praetorian   schedule 29.07.2011