C is higher level language, it's easier for most of humans to write in C. Less errors, faster development and such.
Assembler can be used to optimize program (or it's parts, often bottlenecks) to the fullest for specific architecture.
C programmers however have this advantage: with general code, they do not depend on processor model. When new processor model is made, they just recompile their program with different parameters and they do not need to write everything anew.
C and Assembler are closely tied, it's best to use both as neccessary, using assembler on bottlenecks and blocks of code under special supervision, for example, for security reasons, and C for the rest.