#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
有没有办法可以避免这种 IF 检查并依靠函数返回 substr,如果它不存在,返回NULL
?