2012-04-18 7 views
-1

これはなぜ一致しませんか?これはなぜ一致しませんか?

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

出力:

testme 
no 
+4

d_nameのタイプは何ですか? –

+5

彼はそれを 'puts'に直接渡すことを考えると、' string'ではないと思います。 –

+0

@JamesMcLaughlin:Toucheですが、オーバーロードする可能性があります。 (おそらく、私は知っている) –

答えて

6

試してみてください。

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

またはその代わりにd_namestringを作ります。あなたはそれはあなたを与えるなどの文字列を使用してご検討くださいますが、あなたが本当に

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

を行う必要があり、同じ値を持つ、その時点でのcharへ*

、二つのポインタと比較されているので、これが起こっている

1

が必要なセマンティクスが我々はd_nameで渡されているどの値を知る必要があります。

"ok"を印刷するプログラムでは、値も "testme"である必要があります。

また、この機能をチェックしてください:strcmp。 2つの文字列を比較します。基本的にここでやっていることです。

例:

/* 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; 
} 
+0

ポスターコードは 'd_name'は' puts'出力のため '' testme "'であることを示しています。唯一のエラーは 'strcmp'を使用していないことです。 – Pubby

+0

ああ、私は今それを見る。ありがとうパビー。 – Chad

関連する問題