Posso nominarne due: semplicità e portabilità .
C è molto più semplice di C ++, che è la cosa più vicina a C tra i linguaggi OO. Basta confrontare il libro di K & R in "The C ++ Programming Language" di Stroustrup. Non fraintendermi, amo il C ++. Ma è un linguaggio molto complicato, con un numero enorme di funzioni linguistiche, che richiedono molto tempo per essere padroneggiato. C, al confronto, è molto semplice con solo pochi costrutti. E non sto parlando di librerie qui, solo delle caratteristiche linguistiche nude. Lo stesso è vero se confronti C con Java, C # o qualsiasi altro linguaggio OO. IMHO, l'unica lingua più semplice di C è Scheme, un linguaggio funzionale.
La seconda ragione è che c'è un compilatore C per tutto. Ogni processore e ogni sistema operativo. E non sto parlando solo di Windows contro Linux. Esistono centinaia di piattaforme, processori e DSP incorporati. Sarebbe estremamente fortunato avere un compilatore C ++ per uno di questi, per non parlare di una JVM. Ma ti aspetteresti sicuramente di avere un compilatore C.