2016-05-10 17 views
-3

この関数は常にstrcmp(auxiliar->nick,nuevonick) != 0C - 間違った結果(strcmpの)

int comparar_nick(char *nuevonick){ 

     struct _usuario *auxiliar; 

     auxiliar = primerousuario; 
     while (auxiliar!=NULL) { 

      if(strcmp(auxiliar->nick,nuevonick) == 0) return 1; 

      auxiliar = auxiliar->siguiente; 
     } 

     return 0; 
} 
+3

値が等しくなることは確かですか? –

+1

おそらくトリミングが必要です。 – BLUEPIXY

+4

はどこかに 'fgets()'が含まれていますか? –

答えて

1

getsが時代遅れであることを、1を返すことはありません。 fgetsを使用して入力を読み取っている場合は、newlineが入力されたままになります。このコードでnewlineを削除できます。

#include <stdio.h> 
#include <string.h> 
... 

char instring[100]; 
int found; 
if(fgets(instring, sizeof instring, stdin) != NULL) { 
    instring [ strcspn(instring, "\r\n") ] = 0;   // remove trailing newline etc 
    found = comparar_nick(instring); 
}