"succeeds" in what way. Did you, perhaps, think that strcmp() returned 'true' on a match and 'false' on a mismatch? strcmp() returns 0 (false) when there is a match. !strcmp() is true when there is a match.
strcmp() returns -1 for "less than", 0 for "equal" and +1 for "greater than.