It did not really compete that much. The target audiences and target domains are really different.
C was invented as a replacement for assembler to portably write operating systems and applications in a slightly higher-level notation.
Lisp was invented as a tool for computing with symbols (computer algebra, theorem prover, game playing, natural language processing, expert systems, knowledge representation, ...).
when the Lisp Machines were invented in the mid 70s (as personal workstations for research programmers mainly in AI) and commercialized in the early 80s there was nothing to compete with. When alternatives were available, there was no longer the need to have those (and they were not competitive), so they died away.
I do not want to rehash all the points covered under "Worse is better" - [A] largely because I dont think I could ever write as eloquently as Richard Gabriel. You are right C has "won" for some value of won - in the sense that most large systems currently in existence have C at their core. From another point of view lisp has "won" because at least in the circles I roll the languages used today are closer to lisp (dynamic languages with garbage collection) than they are to C. In any case neither you or me could take any credit for what our language ancestors (Kernighan, Ritchie, Steele, Pitman etc) accomplished in their day.
Lisp is not concerned by implementation details. C is somewhat concerned with implementation details.
Implementation details largely determine how fast a given program will run.
C makes it rather easy to predict how fast a piece of code will run, and what its bottlenecks will be. Lisp makes that rather hard.
Given that there are always programs that need to be as fast as possible even with hand-optimized algorithms running on top-of-the-line hardware, C will win for many applications that have even moderate performance requirements.
Also, current mainstream operating-systems favor C and C++, if only implicitly.
I don't buy the "Lisp is not concerned by implementation details" because all I see in Lisp are implementation details, namely everything is a singular linked list and you have to go somewhat out of your way to use anything else (switch from lists to actual arrays, and you have to modify your code from using CAR to AREF, for example). Don't forget the numerous equality operators either (EQ, EQL, EQUAL, etc) whose results are most definitely dependent upon the underlying implementation detail (EQ compares pointers, EQUAL compares visual representations).
For speed, I use profilers, because I'm still surprised at where the code is spending its time, even after 20 years of programming in C.
I'm beginning to think that Lisp appeals to programmers that like programing in raw Abstract Syntax Trees which is a small subset of all programmers.
Your point over everything being a singular linked list is a very good one. Even as a lisp user I wish that things were specified in terms of a sequence protocol rather than a list data structure. I believe Clojure rectifies this historical anomaly. In their defense the people creating Lisp didnt have any prior art and were making rules as they went along.