C is a high level language
You basically transform your code, until you have a bunch of machine instructions, that consist of 1s and 0s such that your processors circuits understand it.
Usually the chain looks like this:
> Programming language
> Byte Code
> Machine Instructions
Of course this differs for different languages
Interpreters are a whole other world, because you don't actually compile stuff, but instead you call precompiled code at runtime.
A programming language is written with a low level programming language (like C and assembler) and a programming language have a compiler (or interpreter), that compiler was written to translate the language to machine language. The most difficult part is to make the compiler.