2017-02-12 6 views
0

Wenn ich die Daten in zwei Knoten vergleiche, heißt es, dass sie nicht gleich sind, aber sie drucken die gleichen Informationen.Gleiche Daten, aber nicht gleich in zwei Knoten

while(currentUserTry != NULL && currentPassword != NULL) { 

    if(currentUserTry->color != currentPassword->color){ 
     printf("user %s - %lu\n", currentUserTry->color, strlen(currentUserTry->color)); 
     printf("pass %s - %lu\n", currentPassword->color, strlen(currentPassword->color)); 
    } 

    currentUserTry = currentUserTry->next; 
    currentPassword = currentPassword->next; 
} 

druckt:
Benutzer az - 2
Pass az - w
Benutzer vm - 2
Pass vm - 2

+0

Übrigens, lassen Sie uns wissen, ob das, was in den Antworten vorgeschlagen wird, funktioniert, indem Sie es als akzeptiert ankreuzen. Wenn nichts funktioniert, geben Sie bitte die Antworten unten an, was nicht funktioniert hat und was geändert werden sollte. – nikaltipar

Antwort

0

In dieser if-Anweisung Sie Standard-C-Funktion strcmp

verwenden
if(strcmp(currentUserTry->color, currentPassword->color) != 0){ 
1

Verwenden strcmp wenn zwei Strings verglichen werden.

while(currentUserTry != NULL && currentPassword != NULL) { 

    if(strcmp(currentUserTry->color, currentPassword->color)){ 
     printf("user %s - %lu\n", currentUserTry->color, strlen(currentUserTry->color)); 
     printf("pass %s - %lu\n", currentPassword->color, strlen(currentPassword->color)); 
    } 

    currentUserTry = currentUserTry->next; 
    currentPassword = currentPassword->next; 
} 

Die Bibliotheksfunktion C int strcmp (const char * STR1 const char * STR2) vergleicht die Zeichenfolge, auf die Zeichenfolge von str1 wies durch str2 zu spitz.

Diese Funktion Rückgabewerte, die sich wie folgt dar:

wenn Rückgabewert < 0, dann gibt es str1 als str2 weniger ist.

if Rückgabewert> 0 bedeutet, dass str2 kleiner als str1 ist.

Wenn der Rückgabewert = 0 ist, bedeutet dies, dass str1 gleich str2 ist.

Verwandte Themen