Indeed, any book by W. Richard Stevens is well worth reading. His writing style is as lucid as it gets.
I'm a bit of the opinion that you can't really learn programming by books, though. That's not to say you shouldn't read books! You can pick up ideas, but to assimilate ideas you have to have some experience to base things on. You get that by programming, yeah? And you have your own way of thinking, so recommendations by others are....well, again, you can get ideas, things to try out, but ultimately you have to find out what does it for you, what makes things click for you personally. Whatever blows your hair back, as Will Hunting says.
I originally "learned" FORTRAN from the FORTRAN 77 specification. No kidding, I think I printed it out. Of course, it's a terrible way to learn a language, and I forget it all. Or it's great, it depends on how you think. It certainly won't teach you how to do anything, but you can learn a lot of vocabulary and ideas, and if you don't know much about programming you might soak it up like a sponge. You'll still suck as a programmer, even if you sleep with it under your pillow. :)
One rule of thumb I learned from somebody once was: pick up a book, flip to the middle, and if you don't understand it, it's not worth reading (yet). But yeah, you have to come up with your own rules of thumb.