2013-11-26 44 views
0

雖然運行下面的代碼,我看到,"x,y"模式發生。這種模式打印在這裏:printf("%s", start);。但if (strncmp(cp, VAL, strlen(VAL) == 0))沒有介入。我期望,它應該介入。 什麼是錯的?Strncmp - 錯誤的邏輯

[email protected] ~ $ ./test|grep x,y 
    <P k="x,y" v="160.59" z="100"/> 

這是部分代碼:

#define VAL      "\"x,y\"" 

void process(char * start, char *stop) 
{ 
    char * cp; 
    printf("process\n"); 
    printf("%s", start); 
    for (cp = start; cp <= stop; cp++) 
    { 
    if (strncmp(cp, VAL, strlen(VAL) == 0)) 
    { 
     printf ("F O U N D VAL\n"); 
    } 

}

+3

看你的'=='在哪裏。 –

+0

如果您嘗試解析XML,則使用XML解析庫... – 2013-11-26 21:44:44

+0

@ H2CO3爲什麼它會更好? – user897237

回答

5

也許你的意思

if (strncmp(cp, VAL, strlen(VAL)) == 0) 

而不是

if (strncmp(cp, VAL, strlen(VAL) == 0)) 

其中基本檢查0個字符,返回0,所以條件總是false

+0

這似乎是一個非常常見的問題... – Bob