But when I tried to check some advanced applications I found that I cannot understand it?

Understanding other peoples' programs one of the most difficult things you can do.
Work through the source line by line, and try a few example cases in your head to get an idea of whatever the code is doing.
Reading source is not like reading a book. Or even a technical manual. It's more like... it's more like detective work. You have to look around a lot.

I agree with p-bman's advice to program your own applications. That'll help you understand what the other applications are doing. Chances are they're using libraries that you haven't yet read about. Chances are they have a couple hacks here and there that you won't find in a book. So if you don't understand the program right away it's nothing to fret over.

Half is theoretical knowledge. Half is practical experience.
Delve deeply into the depths of the language. Get to know what the language has to offer. For example, templates and meta-programming are some of the most difficult parts of C++. Mastering them will definitely make you an advanced C++ developer.
Then you have to create programs, programs, programs. Reading others' source is a good idea, if only to adapt yourself to others' styles. Most important is to get experience writing good code.

Originally Posted by Adak

io.h certainly IS included in some modern compilers. It is no longer part of the standard for C, but it is nevertheless, included in the very latest Pelles C versions.

Originally Posted by Salem

You mean it's included as a crutch to help ancient programmers limp along without them having to relearn too much.

This is sort of a straw dog: a lot of those "Teach Yourself X in 21 days" books are fine and dandy, and they do not say "Master Everything in 21 Days", so there is nothing fallacious about the claim. Maybe "Get started with X in 21 days" would be a better title WRT programming languages.

However, all those books from the original post look like they are for learning "beginner to intermediate" skills. This is not to say that reading a book with "advanced" on the cover will make you an advanced programmer. It might help, but probably no amount of reading will do that, as has been said, it is about real practice. Also consider: if someone has spent 10,000 hours programming, chances are they have read more than 5 or 6 books in addition to those 10,000 hours actually writing code.

Originally Posted by MIH1406

But when I tried to check some advanced applications I found that I cannot understand it?

Well, hopefully we have settled the question: you are closer to being a "beginning" programmer than an "advanced" one, so why would you expect to understand advanced applications?

Reading complex, undocumented source is not easy. I've probably spent 3000+ hours coding in C/C++ (and at least that again in other languages), but I am no where near being able to say I could take the source for a large, complex application, spend a few hours with it, and then explain how it works. Maybe in a week, if there were enough motivation. There are plenty of things I would not even bother trying to understand, because while it might be possible, it is just not worth the time it takes.

I'll bet that in those books you listed, there is not one single sentence about "how to understand source code". So maybe it would make more sense, rather than asking "why don't I understand this", to ask "HOW can I understand this?"