これはなぜ一致しませんか?これはなぜ一致しませんか?
...
puts (ep->d_name);
if(ep->d_name=="testme"){ printf("ok"); } else { printf("no"); }
...
出力:
testme
no
これはなぜ一致しませんか?これはなぜ一致しませんか?
...
puts (ep->d_name);
if(ep->d_name=="testme"){ printf("ok"); } else { printf("no"); }
...
出力:
testme
no
試してみてください。
if(!strcmp(ep->d_name, "testme"))
またはその代わりにd_name
string
を作ります。あなたはそれはあなたを与えるなどの文字列を使用してご検討くださいますが、あなたが本当に
puts (ep->d_name);
if(strcmp(ep->d_name, "testme")==0){
printf("ok");
}
else {
printf("no");
}
を行う必要があり、同じ値を持つ、その時点でのcharへ*
、二つのポインタと比較されているので、これが起こっている
が必要なセマンティクスが我々は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;
}
d_nameのタイプは何ですか? –
彼はそれを 'puts'に直接渡すことを考えると、' string'ではないと思います。 –
@JamesMcLaughlin:Toucheですが、オーバーロードする可能性があります。 (おそらく、私は知っている) –