Read code written by others. In the case of C there is a large base of high quality open source code you can study. C is a simple language that is used for large scale, complex work so a vast amount of convention and idiom has developed. Those conventions vary from one code base to the next, but you'll find many commonalities and have no difficulty adapting once you've had enough exposure.
Reading working code is crucial; man page examples and language books won't expose you to enough real world usage. Programmers use the preprocessor. They do subtle and effort-saving things with enums and typedefs and designing a good struct is crucial.
Some well-thought-of C code bases include postfix, nginx, APR and lighttpd. After you've seen enough C you can just glance at a page of C code from across the room and know whether it's likely to be crap or not.
Reading working code is crucial; man page examples and language books won't expose you to enough real world usage. Programmers use the preprocessor. They do subtle and effort-saving things with enums and typedefs and designing a good struct is crucial.
Some well-thought-of C code bases include postfix, nginx, APR and lighttpd. After you've seen enough C you can just glance at a page of C code from across the room and know whether it's likely to be crap or not.