1. Уважаемые участники и гости, 19 октября codeby будет работать в режиме "Только чтение". Регистрация новых участников будет закрыта. 20 октября портал продолжит работу в прежнем режиме.

Strcmp()

Тема в разделе "Общие вопросы по С и С++", создана пользователем backspace, 4 сен 2010.

  1. backspace

    backspace Гость

    Репутация:
    0
    Функция Strcmp() сравнивает строку s2 со строкой s1.Если строка s1 лексикографически меньше строки s2,возращает отрицательное число.
    В смысле каждый раз любое произвольное отрицательное число?или определенное?
     
  2. Mice

    Mice Гость

    Репутация:
    0
    backspace
    Тебе сказано что - то про определенное число? Каждый раз любое. Как правило, знать ,какое именно там число нам вообще не нужно. Просто проверяем, больше нуля или меньше.
     
  3. bini1988

    bini1988 Гость

    Репутация:
    0
    Есть не проверенное подозрение, что возвращается разность сиволов, поскольку каждому символу соответсвует порядковый номер в соответсвии с таблицой ASCII, так символы можно вычитать:

    Код:
    cout << (int) 'z' << endl;
    cout << (int) 'a' << endl;
    
    int rez = 'z' - 'a';
    Результат будет положительное число.
     
  4. astronom

    astronom Гость

    Репутация:
    0
    Код:
    int
    strcmp(s1, s2)
    register const char *s1, *s2;
    {
    while (*s1 == *s2++)
    if (*s1++ == 0)
    return (0);
    return (*(const unsigned char *)s1 - *(const unsigned char *)(s2 - 1));
    }
    http://fxr.watson.org/fxr/source/libkern/strcmp.c
    :)

    интересно, почему там именно (s2 - 1)?
    ;)
     
  5. Trupik

    Trupik Гость

    Репутация:
    0
    Потому что после выхода из цикла (не важно, по какой причине) из-за инкремента s2 указывает на символ, следующий за проверенным/нужным.
     
  6. DarkKnight

    DarkKnight Well-Known Member

    Репутация:
    0
    Регистрация:
    1 авг 2010
    Сообщения:
    653
    Симпатии:
    0
    А зачем так тему то развили :)
    Ну глупо же, все таки сравнение булева-функция... 3 варианта =, <,>.. И все тут, больше еще впринципи использовать ни где нельзя :)
     

Поделиться этой страницей