The various Arduino specific books tend to be very narrowly focused. They describe how to implement a few projects. I would stay away from them for learning C/C++ programming. Any C book will teach you a lot. But, there are thousands of online sites that are free. Read some of them for a while, before shelling out for a book. By the time you have read a little, you will be able to tell whether any particular C book is any good, or not. If you have a local library, they can be good sources, too.
I'm not opposed to buying books. I've got hundreds of them. I just think you should have some idea of whether a book is any good before you buy it.