C is called middle-level language because it actually binds the gap between a machine level language and high-level languages. A user can use c language to do System Programming (for writing operating system) as well as Application Programming (for generating menu driven customer billing system ). That's why it is called the middle-level language.
High level - Ada, Modula-2, Pascal, COBOL, FORTRAN, BASIC
Low level - Assembler
Key points about the terminology used in this article
Low, high, blah-level is all just vague terminology with no deterministic factor behind it. Traditionally, low-level languages refer to machine code and assembly, and high-level refers to everything else. Now we are also using a "very high level" term which is used for scripting languages (anything interpreted rather than compiled).
What do you think?
I hope, now you have a better understanding of middle, high and low-level languages. Comments and suggestions regarding this article are welcome.