2017-12-12 14 views
0

char의 포인터를 char의 포인터로 잡고있는 struct의 필드를 char와 비교하려고하는데 비교가 작동하지 않습니다.struct와 포인터를 비교하는 방법

typedef struct node{ 
    char * word; 
    struct node * next; 
    int occurrence; 

}No; 

  aux = list; 
      while(aux != NULL){ 
      if(aux->word == token) 
      { 
       new_node->occurrence = new_node->occurrence+1; 
       exist = 0; 
      } 
      aux = aux->next; 
     } 
+0

코드가 조금 더 필요합니다. 'list' 란 무엇입니까? –

답변

2

if(aux->word == token)

것은 음이 블록을 입력합니다 당신은 주소를 비교하고 경우에 그들은 (매우 가능성이있는) 동일하다.

올바른 방법은 내용을 확인하는 것입니다. strcmp()이 도움이됩니다.

strcmp(aux->word, token) == 0 

그들에 의해 지적 된 내용을 비교합니다. 그것은 여기에 적합합니다.

+0

글쎄, 주소가 같을 수도 있습니다. 그러나 실제로 그는 문자열이 동일한지를 알고 싶어합니다. –

+0

@PaulOgilvie .: 가능하지 않음 ... 너무 강하다. 그렇지만 OP는 문자열을 간단히 비교하려고합니다. – coderredoc

2

대신

if (aux->word == token) { 
} 

당신은 쓸 필요가 :

if (strcmp(aux->word, token) == 0) { 
// your code here 
} 

사람을 strcmp

0

== 연산자는 문자열에 사용할 수 없습니다. 표준 함수 strcmp()를 사용해야합니다. 문자열이 같으면 함수는 0을 반환합니다.