For the last, hmm, 6 months I\'ve been reading into Programming in C, I got myself K&Rv2, BEEJ\'s socket guide, Expert C programming, Linux Systems Programming, the ISO/IEC
If you're interested in security, try coding a web application with security in mind. If you create something like a forum you'll not only learn about a number of security concerns, but also how to use multiple technologies like databases, web servers, and a new language and potentially new style besides C. And then when you're done with your project, compare the code to other similar software. If you get stuck on your project you can also look at similar projects to see what they do. And it can be as simple or as complicated as you want it to be.
Web programming may be different from systems programming in a lot of ways, but both share many security concerns.
You can only learn the language, when you are using it. Simple examples or exercises will never give you the deep insight into the language. I personally also found the exercises at the end of a chapter boring and unworldly, so I didn't do them. As other state find a project you are interested in. This can be anything, starting from a simple board game up to a video cutting system. If you found out what would be interesting for you, take a look on how you can accomplish it. You will need to use some helping libraries, for the UI and also for the backend. And then start to work! (Of course the project should be doable for you, hence don't take an aim like 'writing a better word processor than Winword'.)
Another way is to dig for an OSS project that you are interested in and where you are missing some features. Implement those! The great benefit is that you get a source review that is probably tougher then from any teacher. Once you learned those coding styles, you probably already forgot about the language itself.
Consider reading more content on the "concepts" of programming than purely syntax:
Join a mailing list/newsletter/magazine/podcasts for programmers in your area of expertise: http://www.drdobbs.com/cpp/;jsessionid=XVZEO0SKOCRRBQE1GHPCKH4ATMY32JVN
Visit StackOverflow.com and try to solve issues periodically to give yourself a mental challenge and help others.
Go to work. Seriously, find a job for a beginner and let someone with a bigger knowledge guide You (if You have luck) or check the codebase for a useful hints (if You have smaller luck).
In other way, You can start a project for Yourself as some of folks suggested and improve Your knowledge as the opportunity arises.
However, I wouldn't mix both of these worlds - don't start by agreeing a deal for a money - You will probably be prone to under/over-estimating time cost, won't have a good knowledge of bigger solutions, etc. It's better to have someone to guide You or have more time to learn things.
Ah, and btw. - read books (CC2, some design patterns books, "Clean code" are a good place to start with and great reference-books for the whole career) and blogs (You'll know it when You see it).
most of which are generally really boring
Learn something you find interesting, then the rest will fall into place.
First, you need to write software in a group of at least two, so you can get feedback. If you are working alone, then find a way, either by using SO or another form, like Programmers to get feedback.
Next, find something that interests you, and the project ideas will follow. I work in a municipal environment, but what intrigues me most is the instrumentation for water. I like my other work, but a lot of interesting programming ideas come from working on the water metering and billing systems. Working on water programming problems keeps my mind sharp when other problems, like comparing health insurance enrollees, come around.
Whether you focus more on web or server back-end projects, keep your language knowledge current and small enough to know the language well. From my experience, if you know an Algol-based language well, like C, you can probably learn another similar language like C++, Java, or Perl. C is a wonderful language, but unless you plan on writing Linux kernel, specialized embedded, or Python extension code, I would suggest learning Scala or Clojure, and perhaps Ruby in addition to Javascript and PHP.
However, what would trump what language you learn is someone with an interesting project willing to hire you and your learning their implementation language well. That is if you like Language A, but someone is willing to hire you to work on their project implemented in Language B, then embrace the project, because your growth as a programmer will come from good contribution to the project rather than what language you know.
Finally, become a good problem solver, and those skills will extend beyond writing software. These days, if I am valuable at all, it is because I can work on a bunch of problems, not just programming.