#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
not )slow_gun
null
$ cc -o try try_strsep.c
$ ./try
slow_gun:
token: together
この IF チェックを回避し、関数に依存して substr を返し、そこにない場合は return にする方法はありNULL
ますか?