2012-04-18 4 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. 당신은 당신이 정말로 무엇을해야

같은 값으로 문자 *로, 두 개의 포인터에있는 점을 비교하고 있기 때문에

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

포스터 코드는'd_name'은'puts' 결과로''testme "'임을 보여줍니다. 유일한 오류는 그가'strcmp'를 사용하지 않는다는 것입니다. – Pubby

+0

오, 이제 알겠습니다. 고마워요. – Chad

관련 문제