C is an imperative programming (procedural programming) system programming language.
Modular programming is one of those approaches and is usually applied with procedural programming.
Data manipulation languages are divided into two types, procedural programming and declarative programming.
In procedural programming a unit may be an individual function or procedure.
In procedural programming a unit could be an entire module but is more commonly an individual function or procedure.
With procedural programming, applications are made using subroutines and functions.
Such cross-cutting concerns do not fit cleanly into object-oriented programming or procedural programming.
Most assembly languages also provide a function stack, and function call mechanisms which can be used to gain the advantages of procedural programming.
However, languages such as C introduced syntax specific to these coding styles to make procedural and structured programming more convenient.
Of course, because object oriented, you can modify the behavior by yourself too, using either classes or corresponding functions in procedural programming.