为什么这不匹配?

时间:2012-04-18 13:19:34

标签: c++

为什么这不匹配?

...
puts (ep->d_name);
if(ep->d_name=="testme"){ printf("ok"); } else { printf("no"); }
...

输出:

testme
no

3 个答案:

答案 0 :(得分:6)

尝试:

if(!strcmp(ep->d_name, "testme"))

或改为d_name string

答案 1 :(得分:6)

这种情况正在发生,因为你正在比较两个指针,指向具有相同值的char *

你应该真的这样做

puts (ep->d_name);
if(strcmp(ep->d_name, "testme")==0){ 
    printf("ok"); 
}
else { 
    printf("no"); 
}

虽然请考虑使用字符串,因为它将为您提供所需的语义

http://en.cppreference.com/w/cpp/string/basic_string

答案 2 :(得分:1)

我们需要知道d_name传递了什么值。

对于打印“ok”的程序,该值也必须是“testme”。

另外,看看这个函数:strcmp。它比较了两个字符串,这基本上就是你在这里做的。

示例:

    /* strcmp example */
#include <stdio.h>
#include <string.h>

int main ()
{
  char szKey[] = "apple";
  char szInput[80];
  do {
     printf ("Guess my favourite fruit? ");
     gets (szInput);
  } while (strcmp (szKey,szInput) != 0);
  puts ("Correct answer!");
  return 0;
}