c - Strncmp - 错误的逻辑

标签 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");
    }

最佳答案

也许你的意思是

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

相反

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

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

关于c - Strncmp - 错误的逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20228528/

相关文章:

c++ - 我如何在小型 c++ 项目中使用 tesseract ocr(或任何其他免费的 ocr)?

c++ - 在 C++ 中扩展 C 结构

c - 如何使用C编程使SCTP校验和非零

c - .lib 中的符号在 .so 中不存在

c - 围绕圆计算点时输出不正确

c - 在c中绘制图表

c - 指针问题,赋值

C 如何将一个选项卡排序为多个选项卡

c - 如何在 ANSI C 中对字符串结构数组使用快速排序

c ncurses,窗口边框问题