掲示板利用宣言

 次のフォームをすべてチェックしてからご利用ください。

 私は

 題名と投稿者名は具体的に書きます。
 課題の丸投げはしません。
 ソースの添付は「HTML変換ツール」で字下げします。
 返信の引用は最小限にします。
 環境(OSとコンパイラ)や症状は具体的に詳しく書きます。
 返信の付いた投稿は削除しません。
 マルチポスト(多重投稿)はしません。

掲示板2

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧

No.25081

strtok関数について
投稿者---べた(2006/01/06 21:18:54)


strtok関数についてなのですが、
取り出す文字列が、「255.255.255.255:111.111.111.111」
の場合は、上手く動くのですが、
「111.111.111.111」の場合は、エラーになってしまうのです。

以下、ソースなのですが、1回目のstrtokの戻り値で、NULLと
判断してくれず、elseに入ってしますのです。
どうすればよいのでしょうか。

環境
solaris8
UNIX-C
gcc


#include <stdio.h>
#include <string.h>

main()
{
    char str[128] ;
    char tmp[128] ;
    char *pr ;

//    strcpy(str,"255.255.255.255:111.111.111.111") ;
    strcpy(str,"111.111.111.111") ;

    strcpy(tmp,str) ;
    if ((pr=strtok(tmp,":")) == NULL) {
         printf("[%s]\n",str) ;
    } else {
        printf("[%s]\n",pr) ;
        if ((pr=strtok(NULL,"")) == NULL) {
             fprintf(stderr,"strtok error\n") ;
             exit(-1) ;
        }
        printf("[%s]\n",pr) ;
    }
}



この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:strtok関数について 25082 επιστημη 2006/01/06 22:04:10


No.25082

Re:strtok関数について
投稿者---επιστημη(2006/01/06 22:04:10)


>以下、ソースなのですが、1回目のstrtokの戻り値で、NULLと
>判断してくれず、elseに入ってしますのです。

当然です。マニュアルを読みましょう。

>どうすればよいのでしょうか。

文字列中に特定の文字があるかを調べる関数を使いましょう。
strchrではいかがでしょうか。



この投稿にコメントする

削除パスワード

No.25084

Re:strtok関数について
投稿者---べた(2006/01/06 22:47:19)


>当然です。マニュアルを読みましょう。
>
マニュアルを見たのですが分かりません。
トークンが見つからない場合は、NULLが返却されるので
正しい動きだと思うのですが。




この投稿にコメントする

削除パスワード

No.25085

Re:strtok関数について
投稿者---Hermit(2006/01/06 23:38:49)


>トークンが見つからない場合は、NULLが返却されるので
>正しい動きだと思うのですが。

最初、"111.111.111.111" の token が見つかるので、
それが帰ってくるはずですが。


この投稿にコメントする

削除パスワード

No.25087

Re:strtok関数について
投稿者---επιστημη(2006/01/06 23:41:04)


>>当然です。マニュアルを読みましょう。
>>
>マニュアルを見たのですが分かりません。
>トークンが見つからない場合は、NULLが返却されるので
>正しい動きだと思うのですが。

違います。
トークンとは「区切り文字を含まない部分文字列」ですから、
"111.111.111.111"はトークンです。





この投稿にコメントする

削除パスワード

No.25094

Re:strtok関数について
投稿者---べた(2006/01/07 10:47:06)


>違います。
>トークンとは「区切り文字を含まない部分文字列」ですから、
>"111.111.111.111"はトークンです。
>
>
とんでもない間違いをしながら使っていたみたいです。
マニュアルも正しく理解していなかったみたいです。
ありがとうございます。



この投稿にコメントする

削除パスワード

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧