2013-01-16 43 views
2
int main() 
{ 

    char str[] ="kk,12,,23,4,,,3434,3,33,,,"; 
    char * valarr; 
    int count=0; 
    valarr = strtok(str,","); 
    while(valarr != '\0') 
    { 
       valarr = strtok(NULL,","); 
    count++; 
    } 
    printf("%d\n",count); 
    return 0; 
    } 

在上述程序的輸出是7.strtok的行爲

看來,strtok的是在標記化一次連續的逗號。

而不是連續的逗號我可以介紹一個空白之間,但 有沒有辦法克服這一點,以便我也有空的空間也在計數?

+1

可能的重複:http://stackoverflow.com/questions/8977836/strtok-s-behaviour-with-consecutive-delimiters - 雖然這裏的答案更好。 – Csq

回答

5

正確。 The documentation陳述得很清楚:

解析字符串中兩個或多個連續分隔符字符的序列被認爲是單個分隔符。

這就是strtok()應該如何工作。你可能會更好地滾動你自己,這也會讓你擺脫strtok()的骯髒。

1

簡短回答:NO 至少使用strtok,check this來了解什麼更適合您的應用。