With a good teacher/curriculum, bad habits can be avoided, but nonetheless...
1. Lack of universal code documentation/commenting standards.
Flower boxes? Wherever you feel like it? Everyone seems to prefer a different style.
Scheme (with HtDP) has its set of commenting conventions that force the beginner to document functions, constants, types, etc. Java has Javadoc. C# has XML documentation comments.
2. Type assumptions
C is weakly typed, and its types and typedeffed types also tend to differ from platform to platform. The compiler will also quite happily cast things silently for you. Is a plain char signed or unsigned? size_t, time_t, ptrdff_t? Can you safely assume sizeof(size_t) == sizeof(ptrdff_t) when the standard does not guarantee it? If time_t is a typedeffed long, is it only 32-bit wide and will thus break in 2038?
Should a beginner learn to worry about these things? I think so, if they're going to interact with these types, but that might be overwhelming.
3. Bit twiddling
Bit twiddling seems unavoidable to me when you use C libraries. This requires a beginner to learn and apply boolean algebra in a dry and error-prone manner. HtDP also teaches boolean algebra, but without bit twiddling. Bit twiddling in 2013 just screams premature optimization to me.
I like C and all, but IMO it's a bit much for a beginner.