MMcL> The C language doesn't take long to learn. However it takes
MMcL> a long time to be really effective. The only answer is to
MMcL> write lots of code.
There's more to the answer than that. If you write code uncritically,
you don't learn C very well, and you wind up with a great steaming
pile of bad code. Examples abound, and if you pay attention for a
week in this group you'll find several.
Read other people's code - but don't assume that just because it's in
production, or because it's published, or because it's part of a
high-profile open source project that it's good. Compile and run your
code in as many different environments as you can, so you can avoid
the "all the world's a Vax^W^Wan x86" misconception. Use the best
automated code-checking tools (such as lint and gcc -Wall) that you
can find. Read through the C standard that you're adhering to; you
probably won't understand it at first, but the more C you learn, the
more you'll understand it. Have more experienced programmers review
your code and comment on it, and pay attention to and learn from their
comments. Remember that if a dozen experts disagree with you, there's
a damn good chance that you're wrong and they're right; to be Galileo,
it is not sufficient that the establishment disagree with you, but for
the establishment to be wrong.
And programming is a separate skill from knowing the syntax and
semantics of a language. Far too many people think that they are
programmers when they have a loose grip on the syntax and no grip at
all on the semantics of a single programming language. The more you
equate "learning C" with "learning to program" the worse you will end
up doing at both.
Further good advice:
http://norvig.com/21-days.html
Charlton