adisharma I'm a self taught programmer who learnt C language all by myself with help of internet back in my school days in 2009.
I'll tell you the way I got things:
The first step is to get the environment installed so that you can compile your programs. Save yourself by not using Turbo C (it's dead) and get either GCC or Clang compilers.
Try out the first hello world program. All you need to do is to include the stdio.h header file and invoke the printf function from main.
Compile and run it. Get thrilled by seeing your own code live in action. Learn the extreme basics of strings by changing the messages. Learn to do multiple statements.
Now spend some time reading about different tokens in your program. Learn a few things about directives, how they work. Learn about statements and data types.
It's now time to learn about expressions. All the expressions return something in C. Learn about different types of expressions and their return values. Perfect time to learn a bit about variables and constants. Also learn about conditional statements.
Loops. Learn to do some repetitive logics by running a statement or two using loop statements. Also try out the switch case if you haven't till now.
Time to get better. Learn to use arrays. But at the same time, try to understand how memory works. It's nothing but contiguous blocks of memory. Don't go for dynamic allocation yet.
Time to understand functions. In the C language, think of them as named set of statements that can take some parameters and return a value. Understand that you were already using functions, as main, printf, scanf are all functions.
Do you know that you can pass expressions as parameters to functions? Do try it out. Also, function calls by themselves are allowed during expressions. Do some practice here.
What do you think happens when you call a function from inside of its own statements? Yes, functions can call themselves. This is called as recursion. Recursion is kinda fun, but be sure to have an exit condition somewhere in it. You will crash otherwise.
Time to learn about structures. Do you have a large data that you want to group together? Arrays work, but structures are better. A structure is a custom type (heterogenous) which can contain multiple fields of multiple data types. Have some fun with it.
Memory comes again. Just like variables / constants, arrays, structures also take some memory. Take some time to understand how the fields of the structure are laid out in memory. Now try out unions. They are similar, but have a small yet large difference. Understand that too.
Now you know about this memory layout, it's time for you to try pointers. The basic concept here is that you can declare a variable which points at other variables (you can use them to point at functions too, but that's a bit advanced yet). Understand how to get the address of something and get something from address.
Time to come back again to functions. You know that when you normally pass some parameters, they are copied? For larger ones it takes some time to do the copy operations. Pass their address instead, which is super quick. In other words, learn about pass by value and pass by address.
Learn about dynamic memory allocation now. It's only a matter of learning about three standard functions, but be careful not to leak memory by not freeing up once you don't need some.tvrdi šapun za ruke
If you've come this far, then you have successfully mastered the basics of C. From this point, your actual learning will be the internals of the language, and learning about more standard functions.