C, however, has a lot of traps and pitfalls that can be confusing or discouraging to a beginner. I think there are lot of people out there who gave up on programming because their first experience was in C. Weird operator precedence, automatic type conversions, the c preprocessor, differences between pointers and arrays (especially in regards to multidimensional arrays), the #include guard dance around header files, the way #include and header files works in general... There's just a lot of cruft and things about C that complicate the language beyond the inherent complexity of the machine itself. It can also be difficult to learn how to get the whole environment set up, learning about the process of compiling, linking, make, libraries, etc.
I don't think that C is the best first choice of a language for a beginner. Instead I would recommend a language that encourages algorithmic problem solving and computational thinking, something that is a further abstraction from the machine. Then after the student is comfortable with abstract problem solving, and "thinking like a programmer", you can introduce her to see what goes on "under the hood", so to speak, and delve into the lower levels. I would recommend C more as a good second language.