It's just a shorthand for '== 0' (since !0 is true, and !<non-zero> is false). strcmp(3) returns 0 when the two strings are identical. So "if (!strcmp(a, b))" means "if the strings a and b are the same.
I do wonder what would have happened if truth had been defined like it is in Forth[1]? That would make me go with the enums.
1) False is 0 (all bits set to 0), and True is -1 (all bits set to 1 giving a twos-complement -1).