Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

I stopped when I read strcmp returns 0 if two strings are equal and 1 if they aren't.


It's actually 0 if equal, positive if greater, negative if less than.

  > The strcmp() and strncmp() functions return an integer greater than, equal to, or less than 0, according to whether the string s1 is greater than, equal to, or less than the string s2.  The comparison is done using unsigned characters, so that ‘\200’ is greater than ‘\0’.


cmp stands for compare, so the behaviour (returns <0, 0, or >0) is completely reasonable. With three possible outcomes, the function is suitable to be used for sorting.


A much better description of strcmp's behaviour: https://en.cppreference.com/w/c/string/byte/strcmp


It's sad how often you find the truth at the very bottom of a HN thread these days




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: