왜 이것이 일치하지 않습니까?왜 이것이 일치하지 않습니까?
...
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");
}
이 당신에게 줄 것 같은 문자열을 사용하여 고려하시기 바랍니다 있지만 의미 당신은
우리는 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;
}
d_name의 유형은 무엇입니까? –
그는 'puts'에 직접 전달할 수 있다고 생각하기 때문에 'string'이 아닌 것 같습니다. –
@JamesMcLaughlin : Touche,하지만 과부하가 될 수 있습니다. (아마, 내가 아는) –