2012-11-29 56 views
5

我試圖使用strtok()解析字符串;我試圖解析由分號(;)分隔的字符串。但是當我輸入一個沒有分號的字符串到strtok()時,它會返回整個字符串。如果沒有令牌匹配,它不應該返回NULL嗎?Strtok(),沒有令牌匹配

這是我的代碼:

int main(int argc, char** argv) 
{ 
    char cmd[] = "INSERT A->B B->C INSERT C->D"; 
    char delim[] = ";"; 
    char *result = NULL; 

    result = strtok(cmd,delim); 

    if(result == NULL) 
    { 
     printf("\n NO TOKENS\n"); 
    } 
    else 
    { 

     printf("\nWe got something !! %s ",result); 

    } 

    return (EXIT_SUCCESS); 
} 

輸出是:我們得到的東西! INSERT A-> B B-> c將C-> d

+6

'如果沒有令牌匹配,它不應該返回NULL嗎?'N o。整個字符串是一個令牌匹配。 –

+0

如果您正在搜索';'而不是令牌,請嘗試'strchr'。 – ams

回答

9

沒有,分隔符意味着它分隔令牌的事情,所以如果沒有分隔符,則整個字符串被認爲是第一個標記

考慮你是否有兩個令牌,然後拿走其中一個令牌。 如果你有

a;b

那麼你現在令牌A和B

,如果你把b了......

a

你仍然有令牌a