2011-08-09 6 views
0

strtokでは、私にもエラーが出るだけですが、g-> db_cmdはchar *です。この問題で誰かが私に助けてもらえますか? 。strtokクラッシュよくわからない理由

それはトークン化と '\0'で区切り文字を置換する文字列をループ strtok
short processCMD(i_gsd_ptr g, i_exit_cb_ptr i_exit_cb, char* i_cmd) 
{ 

    /*-------------------LOCAL VARIABLES-----------------*/ 
    struct local_stack_def 
    { 
    char delims[3]; 
    int x; 
    short cmd_match, error,len_eulm,range_eulm, imp_eulm, sub_cmd_match; 
    short* cmd_len; 
    short* db_len; 
    char val_cmd[10]; 
    _cc_status cc; 
    char DataEntry[400]; 
    char msg_eulm[400]; 
    char* cmd; 
    char* db_cmd; 
    char space_const[2]; 
    char *result; 
    char del_const[2]; 
    }; 

    short pool_err; 
    struct local_stack_def *l; 

    #pragma nowarn (30) 
    l = POOL_GETSPACE_(i_exit_cb->Pool_addr,sizeof(struct local_stack_def),&pool_err); 
    #pragma warn 
    if (pool_err != 0) 
    { 
    exit(EXIT_FAILURE); 
    } 
    l->x = 1; 
    l->cmd_match=0; 
    *l->db_len = 0; 
    l->db_cmd = g->db_cmd; 
    l->imp_eulm= 1; 
    #pragma nowarn (207) 
    strncpy(l->del_const,"~",2); 
    #pragma warn 


    l->result = strtok(g->db_cmd,l->del_const); 
    strcpy(l->db_cmd,l->result); 
+0

g-> dn_cmdに有効なデータ "this〜string〜"が含まれています – ken

+0

'#pragma nowarn'ディレクティブを使用してどのような警告を抑制していますか? – Praetorian

+0

'' l-> del_const''が有効なポインタであることを確認しましたか? –

答えて

3

。したがって、g->db_cmdが読み取り専用の文字列リテラルを指す場合、strtokコールはクラッシュします。

関連する問題