Strcmp()

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

  1. backspace

    backspace Гость

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

    Mice Гость

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

    bini1988 Гость

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

    Код (C++):
    cout << (int) 'z' << endl;
    cout << (int) 'a' << endl;

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

    astronom Гость

    Код (Text):
    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 Гость

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

    DarkKnight Well-Known Member
    C\C++ Team

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

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