Изучаю по самоучителю курс ANSI C
Непонятно, что ты читаешь. Материалы бывают разные.
Общая стратегия такая:
1. Берёшь K&R2 (книга от создателя языка). Читаешь и выполняешь упражнения. Упражнения там хорошие - дикие задачи, прямо такие же, как в реальном мире.
Про задачи
Бывают задачи такие удобные во многих курсах, их проблема в том, что они легко решаются, потому что они так изначально удобно придуманы. В жизни всё по-другому: во-первых, всё неудобно; во-вторых, не всегда хватает знаний для решения задачи - то есть задача решабельна, но не на твоём текущем уровне развития.
Поэтому важно решать именно неудобные задачи, так как это вырабатывает нужный опыт.
2. Берёшь вузовские лабораторные работы для первого курса для любых языков. Переводишь их себе на C. Большинство задач начального уровня подходят под любой язык. А вузовские задачи направлены на выработку нужных навыков.
Про навыки
Есть сборники задач олимпиадных и есть сборники задач вузовских. Хоть и кажется, что вроде и то задачи и это задачи, но олимпиадные и вузовские задачи сделаны по-разному.
Цель вуза - сделать студента программистом (инженером, который что-то строит из ничего), поэтому задачи формируются так, чтобы выработать вполне конкретные навыки, которые потребуются на более старших курсах.
Цель олимпиады - выявить самых мыслящих. Для этого их не нужно ничему учить, им нужно дать какую-то забубённую задачу и смотреть, кто из них догадается, как её решить. То есть она ничему не учит.
Поэтому не нужно тратить время на олимпиадные задачи, у них очень малая плотность выработки необходимых навыков. То есть интересная задача - это далеко не всегда полезная задача.
И ещё
Если есть что-то подобное, но для ANSI C, с геймификацией и интересностью, то вообще идеально.
Ничего нет, не надо ждать подачек, сделай себе сам всё. Если ты хочешь научиться, делай то, что делали все те, кто реально умеет.