为什么这不匹配?
...
puts (ep->d_name);
if(ep->d_name=="testme"){ printf("ok"); } else { printf("no"); }
...
输出:
testme
no
答案 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");
}
虽然请考虑使用字符串,因为它将为您提供所需的语义
答案 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;
}