Mira ,no soy ningun guru de C ni nada por el estilo pero te recomiendo lo siguiente :
Leer libro de kernighan y ritchie(El leguaje de programacion C) OBLIGATORIO.
Antes que nada debes saber que leer un libro de programacion no es como leer un libro de literatura. Aca tenes que resolver todos los ejercicios , es VITAL que resuelvas todos los ejercicios del libro. Recomiendo que programes en un notepad y que uses gcc como compilador.
Aunque es una referencia obligatorio, es un libro muy avanzado, no es material introductorio, y es una total equivocación referenciar algo tan avanzado a un novato, solo lograras cansarlo y espantarlo, todo esto es progresivo, y como tu mismo dices, es v
ital y totalmente necesario el realizar ejercicios, como todo en la vida, si uno quiere lograr exito, debe lograrlo por si mismo, en material de programación, solamente por medio del esfuerzo autodidacta se cocecha experiencia y logros.
Pero no lo mates con el libro de los dioses, es muy complejo.
Cuando ya manejes mas o menos el lenguaje , te recomiendo bajarte otros libros y ir fijandote vos lo que queres reforzar . No te puedo recomendar otros libros dsp del de kernighan y ritchie debido a que nose el enfoque que queres darle. Por ejemplo , yo no soy ningun guru de algun lenguaje de programacion pero se bastante de la mayoria , ya sea lenguajes de bajo nivel como de alto nivel.Sin embargo me enfoque en la parte algoritmica mas que en lenguaje , ahi si te puedo recomendar libros ( los de knuth).
En fin , no tengo idea lo que sabes , y con que fines quieres aprender.
Uno aprende por el simple hecho de querer aprender, estudiar en si mismo es un arte, y es cuestión de sacarle gusto a la dedicación y al empeño, buscar motivación es importante, así que más allá de buscar material, debes buscar retos. Ahora, como material didactico tienes mucho pero mucho gracias a internet. Aunque más allá de internet, si uno realmente quiere salir adelante, hay que invertir, por ello, hay que hacer sangrar ese bolsillo, y conseguir libros en físico si realmente estas interesado, acudiendo a una biblioteca también encontraras suficiente, no tiene que ser moderno (C es un lenguaje que tiene más de veinte años, y en lo básico sigue igual).
Si quieres libros, puede que los encuentres en pdf, te recomiendo:
Programación en C, C++, Java y UML - Johanes Aguilar
Como Programar en C++, especialmente la sexta edición - Deitel
Con esos dos libros tendras mucho tiempo para matar con este material.
Ahora, no solo es cuestión de libros, hay retos, como decia antes, y cosas aparte, como los geniales videotutoriales, como recomienda mi amigo:
Página con vídeos de gran calidad:
minidosis.orgVideotutoriales de C++, creados por un profesor de universidad, si no me equivoco.
Personalmente, el creador de esos videos, me parece muy majo y carismático, sus explicaciones son muy atrayentes.
A parte de los videos esos, y todo tutorial que pienses seguir, yo te recomiendo:
1) Proponerte una meta, un programita.
2) Lo que no sepas hacer, buscar información (Ej. Google).
Y bueno, así es como fui aprendiendo yo. Pero ya allá tú con lo que quieras aprender, tu ritmo, y etc etc.
Suerte
Puedes consultar su página web o su canal en youtube Pau Fernandez / Paueky,
AGUANTE PAUEKY!!! te enseña desde como instalar apropiadamente en linux o windows, hasta hacer juegos como tetris, snaje, manipulación de imagenes con C++, te enseña estructuras, punteros, clases, referencias...de todo, de todo, es mejor que una universidad en material de aprendizaje, pero si realmente quieres aprender, pues ponte a hacer ejercicios.
Ahora, los retos:
Aprender librerias aparte de las básicas de C/C++, puedes hacer juegos con Allegro, SDL, SFML, etc...
Instalar y aprende a manejar Linux, te garantizo que de una u otra forma le cogeras gusto al software libre, a la programación si es que realmente eres dedicado, de paso, aprenderás multiples cosas, como Python (mucho más facil de aprender que C/C++), perl, bash, shell, ssh, un sin fin de cosas.
Leete los cuadernos de Hack X Crack, tanto los modernos como los antiguos (mejor empieza desde los antiguos) tienen una importante cantidad de articulos muy buenos, que ya son historia pero que te aportan bastante.
La forma apropiada de aprender C/C++, como lo diria yo, no se, tal vez instalando el compilador no???? usa codeblocks y empieza a experimentar!!!! hazte un megaman!!!!! genera archivos, juega con punteros, intenta cambiar los colores del texto de tu cmd o tu bash desde C++, solo hazlo!!! averigua como y hazlo!!