Se vieni dai dialetti Basic, come me, il C ti sembrerà un incubo

Tanto per dirne una, non ha il concetto di stringa, e comparare due righe è un'operazione degna della nasa. Per tacere dell'aritmetica dei puntatori, che sta alla base dei migliori drammi informatici dei nostri tempi.
Ti parlo però da fiero programmatore di gestionali... quindi lavorando su dati ad alto livello (indirizzi, numeri di telefono, volumi macroscopici di consumi elettrici, trigonometria). Se devi programmarci circuiti elettronici, le scelte sono Java (che è il linguaggio portabile per antonomasia, per quanto sia peggio di un dito nell'occhio quando porti le stesse lenti da tre giorni) o, effettivamente, C.
C non è un brutto linguaggio quando tutto quello che devi fare è giocare coi numeri e con la memoria. Anzi, potrebbe benissimo essere il linguaggio migliore per questo. Ti consiglierei di NON leggere nessun libro, ma di cominciare a far pratica solitaria davanti a un buon ambiente (il vecchio Turbo C++ della Borland è facilmente emulabile in Dosbox, ha una interfaccia che è ancora oggi un esempio di chiarezza e di efficacia, ed è scaricabile liberamente dal sito). Se un ambiente integrato e già configurato ti fa' schifo, o vuoi effettivamente cominciare a lavorare già in Linux, una scelta comoda e interessante potrebbe essere l'accoppiata Kate+Gcc. Anche in questo caso, eviterei i libri e ci sbatterei il naso di persona. I libri di programmazione sono per lo più noiosi, specie visto che il C non è, a livello di linguaggio, più espressivo del Qbasic. Le strutture di base (selezione, iterazione, ecc) sono identiche. Fossero linguaggi radicalmente diversi (Python, ad esempio, o Ruby), ti servirebbe, ma se sai già programmare, tutto quello che ti serve è tempo per smanettarci su.
Che Legba, dio e patrono di noi programmatori, ti tenga lontano dai memory leaks e dall'aritmetica dei puntatori. Respect.