#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;
}
その代替:strsep()の使用と、私はそれを実行
$ 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
が正常に
$ cc -o try try_strsep.c
$ ./try
slow_gun:
token: together
は、私は、このIFチェックを回避し、私にSUBSTRを返すために、機能に頼ることができる方法はありtoken
を返すが、(null
ない)空白にslow_gun
を返しますそれがなければ、NULL
を返しますか?
'strdup'によって返された文字列を' free'する必要があります。 – Praetorian
@Praetorian:あなたは私を涙にしました。私はあなたに同意するが、それは私の質問で私を助けるつもりですか? – hari
誰かがメモリリークを避けるのを助けることは常に助けになります:-)私の答えはあなたの質問に役立ちます。 – Praetorian