Strcmp()

  • Автор темы Автор темы backspace
  • Дата начала Дата начала
B

backspace

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

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

int rez = 'z' - 'a';

Результат будет положительное число.
 
Код:
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)?
;)
 
интересно, почему там именно (s2 - 1)?
Потому что после выхода из цикла (не важно, по какой причине) из-за инкремента s2 указывает на символ, следующий за проверенным/нужным.
 
А зачем так тему то развили :-)
Ну глупо же, все таки сравнение булева-функция... 3 варианта =, <,>.. И все тут, больше еще впринципи использовать ни где нельзя :)
 
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab

🚀 Первый раз на Codeby?
Гайд для новичков: что делать в первые 15 минут, ключевые разделы, правила
Начать здесь →
🔴 Свежие CVE, 0-day и инциденты
То, о чём ChatGPT ещё не знает — обсуждаем в реальном времени
Threat Intel →
💼 Вакансии и заказы в ИБ
Pentest, SOC, DevSecOps, bug bounty — работа и проекты от проверенных компаний
Карьера в ИБ →

HackerLab