2017-02-12 3 views
0

Когда я сравниваю данные внутри двух узлов, они говорят, что они не равны, но они печатают ту же информацию.Те же данные, но не равны внутри двух узлов

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

печатает:
пользователь AZ - 2
проход аз - ж
пользователя VM - 2
передача VM - 2

+0

Кстати, сообщите нам, если то, что предлагается в ответах, работает, пометив как принятое, ответьте. Если ничего не работает, прокомментируйте приведенные ниже ответы о том, что не работает и что следует изменить. – nikaltipar

ответ

0

В этом случае заявление вы должны использовать стандартный C функция STRCMP

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

Используйте strcmp при сравнении двух струн.

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

: C библиотечная функция INT зЬгстр (Const символ * str1, Const символ * str2) сравнивает строку, указанную путем str1 в строку, на которую указывает str2.

Эта функция возвращаемые значения, которые заключаются в следующем:

если Возвращаемое значение < 0, то это указывает на str1 меньше, чем str2.

если возвращаемое значение> 0, то оно указывает, что str2 меньше, чем str1.

если возвращаемое значение = 0, то оно указывает, что str1 равно str2.

Смежные вопросы