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
  • であろうと思います、が区切り\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 であると思うのですが
    

    メモリをダンプされる箇所が全然違ってると思います。"9600 E 8 1~" とかってのはシリアル通信のパラメータかなんかでは? 

  • fujita nozomuさん
    今気が付きました、そうですわ、sci("9600 E 8 1");やってますからROMに割り付けられているんですよ!、ははーとんだ大失敗、RAMに一度コピーしてからでないといけません、!皆様初心者だからかんべんしてくださいねー。
Reply
  • fujita nozomuさん
    今気が付きました、そうですわ、sci("9600 E 8 1");やってますからROMに割り付けられているんですよ!、ははーとんだ大失敗、RAMに一度コピーしてからでないといけません、!皆様初心者だからかんべんしてくださいねー。
Children
No Data