Any C book which focuses on the basics will do. Like simon said, MCU programming is quite unique from general PC programming, but that doesn't mean there aren't similarities. I actually didn't use a C book to learn C to begin with, but I did have experience with other programming before-hand and there are quite a few good free online resources.
Things that are probably most important for MCU programming:
1. Basic syntax.
2. Get familiar with low-level operations, particularly bitwise integer operations. A lot of MCU programming deals with manipulating registers which control various hardware functions.
3. Interrupts. This is a topic that really isn't covered in PC programming since it's generally too low-level, but is one of the basic essentials for MCUs.
4. If you want to get more advanced, learning some assembly wouldn't hurt. Sometimes you'll find there are some operations you need to do specifically which you really can't define in C (for example, a NOP instruction).
Things you can likely safely ignore:
1. Any PC-specific API usage (especially if it's specific to a certain platform)
2. Dynamic memory allocation
3. Multi-threading or more complicated parallel programming topics. This is generally an advanced PC topic anyways, and most MCU's only have one processor anyways. A few concepts may apply to when you want to interface multiple MCUs or are using interrupts, but they're generally handled differently .
4. Object oriented programming. Basic structures are useful, but I haven't found much use of more advanced object oriented topics such as inheritance, abstraction, and polymorphism.
Hopefully I haven't missed anything important, if so I'm sure the other members will chime in
![Tongue :P](https://www.eevblog.com/forum/Smileys/default/xtongue.gif.pagespeed.ic.J5mTe0A2NA.png)