Hire competent C developers and you should be good to go.
Anyone who is a competent C programmer understands the limitations of the language, knows there's a lot of truth in his criticisms, and uses C only when there are no other reasonable options. They understand that because they're competent C programmers.
You can write correct code in any language, or incorrect code in any language, but the choice of language makes a really big difference in how many errors your code has. C is a minefield of potential errors that don't exist in many other languages, and then it only gives you really primitive tools for avoiding those errors. You're responsible for manually doing all memory allocation, and then manually freeing that memory when it's done, and you don't even have access to destructors or try/finally constructs to do that more safely. All memory access is through pointers, which can then be used to access any memory location in the program's address space. That's insane. We've learned a lot about language design in the 40 years since C was created, and we know there are much better ways of doing these things.
At least use C++ instead of C. It's a superset of C, so it can do anything C can do. But it also provides tools for avoiding those problems. Use STL containers instead of arrays. Use references instead of pointers whenever possible. Use destructors to do your memory management via RAII. You will make fewer mistakes, and your code will contain fewer errors as a result.