2017-12-12 13 views
0

char型のポインタを保持している構造体のフィールドとchar型のポインタを比較しようとしていますが、比較が機能していません。構造体とポインタを比較する方法

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を返します。

関連する問題