CS+ strtokの動作がおかしい?

お世話になります

strtokの動作ですが

int main(void)
{
        char str[] = "ABCD ef.1234.G";
        char *tp;

        /* スペース.を区切りに文字列を抽出 */   
        tp = strtok( str, " ." );
        puts( tp );
        while ( tp != NULL ) {
                tp = strtok( NULL," ." );
                if ( tp != NULL ) puts( tp );
        }
        
        return 0;
}

【実行結果】

ABCD
ef
1234
G
であろうと思います、が区切り\0が出力されません(下記ダンプは下を実行後です)
FFF049AE 39 36 30 30 20 45 20 38 : 20 31 00 20 2C 0D 09 00 9600 E 8 1 ,
FFF049BE 25 73 20 25 73 20 25 73 : 20 25 73 0D 00 20 2E 2C %s %s %s %s .,
str[strlen(str)]=' ';
str=strtok(str," ,\r\t");
本来ならば39 36 30 30 00 45 であると思うのですが
昨今のエラー発生で
_s1ptr=NULL; // Remove the comment when you use strtok()
(E) E0562310 E0562310:Undefined external symbol "__s1ptr" referenced in "DefaultBuild\resetprg.obj" gen.mtpj
_s1ptr=NULL;をコメントアウトにしていることが関係しているのでしょうか?
教えていただけないでしょうか、よろしくお願いします。
Parents Reply Children
  • わわいさん
    まず先日
    _s1ptr=NULL; // Remove the comment when you use strtok()
    これを入れるとエラーがでるので
    //_s1ptr=NULL; // Remove the comment when you use strtok()
    このようにコメントアウトして使用しております、これは説明のとうりstrtok()を使用する場合に必要
    というような説明がされております、これは先日の質問提起の内容でした
    今回の問題はそれが関連しているのではないかと思っております
    1.strtokそのものは使用できている
    2.strtok()動作も概略できている
    3.strtok()から取り出したトークンにデリミタが無い(これが不都合)
    以上です、よろしくお願いします。