What are examples of inconsistency and incompleteness in Unix/C?
The question's title suggests that some basic user interface inconsistencies may interest you:

Unix commands don't follow any particular syntax for specifying options and flags. For example, most commands use single letters preceded by '-' as flag: cat -n some_file, but exceptions like tar tf some_file.tar and dd in=some_file out=some_other_file count=2 exist in commonly used commands.

Unix and its descendants and relatives have multiple slightly different regular expression syntaxes.  Shells use "*" where other programs (grep, egrep, vi) use '.*'.  egrep has '+' and '|' as operators, grep does not.

The basic "everything is a file" system call interface could be viewed as incomplete: read/write/seek/close doesn't fit every I/O device.  Badly needed exceptions get lumped into "ioctl" calls, but devices like sound cards don't even fit that very well.