Strncmp - 错误的逻辑

时间:2013-11-26 21:40:13

标签: c

在运行下面的代码时,我看到,出现了"x,y"模式。这种模式打印在这里:printf("%s", start);。但if (strncmp(cp, VAL, strlen(VAL) == 0 ))没有介入。我期待,应该介入。 有什么问题?

   me@host ~ $ ./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");
    }

}

1 个答案:

答案 0 :(得分:5)

也许你的意思

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

而不是

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

基本上检查0个字符,返回0,因此条件始终为false