I think programmers should know the basics of C even though most of them will never work at that low a level. If you don't understand C, you probably don't understand any modern imperative languages, practices, or patterns. If you don't understand imperative programming (what it is, where it is good, where it is bad) then you don't understand high-level or functional programming.
Also, C isn't a complicated language. Like any, it has faults and warts, but it's pretty damn elegant on the whole.
Also, C isn't a complicated language. Like any, it has faults and warts, but it's pretty damn elegant on the whole.
C++, on the other hand... don't get me started.