2011-08-09 83 views
0

在strtok它甚至沒有給我和錯誤,它只是崩潰,下面的g-> db_cmd是一個char *,任何人都可以幫助我解決這個問題,先謝謝你的幫助。strtok崩潰不知道爲什麼它的bug

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

strtok遍歷字符串,標化,並與'\0'替換分​​隔符。因此,如果g->db_cmd指向只讀字符串,則strtok調用將會崩潰。

相關問題