【掲示板ご利用上の注意】

 ※題名は具体的に!
 ※学校の課題の丸投げ禁止!
 ※ソースの添付は「HTML変換ツール」で字下げ!
 ※返信の引用は最小限に!
 ※環境(OSとコンパイラ)や症状は具体的に詳しく!
 ※マルチポスト(多重投稿)は慎んで!

 詳しくはこちら



 本当はこんなに大きく書きたくはないのですが、なかなか守っていただけなくて…。
 守ってくださいね。お願いします。(by管理人)

C言語ソース⇒HTML形式ツール   掲示板2こちら


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

No.20546

strtokの使い方について
投稿者---sa(2005/04/04 13:04:47)



strtokを使って「姓.名@xxxxxx」から姓、名を取り出そうと
しています。
「姓.名」の時は、上手く行くのですが「名」しなない場合、
「"."」を求めるstrtokでcoreを出力します。
何がいけないのでしょうか。

環境は、Solaris8、gccでコンパイルです。

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

main()
{
    char name[51] ;
    char wk_name[51] ;
    char sei[21] ;
    char mei[21] ;
    char *pr ;

    memset(name, '\0',sizeof name) ;
    memset(wk_name, '\0',sizeof wk_name) ;
    memset(sei, '\0',sizeof sei) ;
    memset(mei, '\0',sizeof mei) ;

    strcpy(name,"test0001@test.co.jp") ;

    pr = strtok(name,"@") ;
    strcpy(wk_name,pr) ;
printf("pr      [%s]\n",pr) ;
printf("wk_name [%s]\n",wk_name) ;

    pr = strtok(wk_name,".") ;
printf("Debug 2-2 [%s]\n",wk_name) ;
    if (pr == NULL) strcpy(sei,wk_name) ;
    else {
        strcpy(mei,pr) ;
        strcpy(sei,strtok(NULL,".")) ;
    }
printf("sei [%s]\n",sei) ;
printf("mei [%s]\n",mei) ;
}




この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:strtokの使い方について 20547 REE 2005/04/04 13:18:47
<子記事> Re:strtokの使い方について 20548 飛行機雲 2005/04/04 13:56:53


No.20547

Re:strtokの使い方について
投稿者---REE(2005/04/04 13:18:47)


>
>strtokを使って「姓.名@xxxxxx」から姓、名を取り出そうと
>しています。
>「姓.名」の時は、上手く行くのですが「名」しなない場合、
>「"."」を求めるstrtokでcoreを出力します。
>何がいけないのでしょうか。

strtokの動作を勘違いしている点です。
strtokはデリミタがない場合に、残りの全てをトークンとして返します。
新たなトークンがなくなったときにNULLを返します。

strcpy(sei,strtok(NULL,".")) ; の時に
strtokが(既にトークンがないために)NULLを返し、strcpyがcoreを出力しています。



この投稿にコメントする

削除パスワード

No.20548

Re:strtokの使い方について
投稿者---飛行機雲(2005/04/04 13:56:53)


> pr = strtok(wk_name,".") ;
> if (pr == NULL) strcpy(sei,wk_name) ;
で落ちている見たいです。
NULLの判定がおかしいのではないですか。


この投稿にコメントする

削除パスワード

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