When almost every user is "incompetent" with the tool, then yes, it's the tool's fault.
Or perhaps you always hear about C going wrong because it's so widely used. Mistakes can be made with any language, even Ada.
You can blame user error if you want, but if all you're doing is regularly making excuses for the design flaws in the tool, what purpose does that serve?
C has its problems, but they can easily be fixed. The most recent standard (C23) has finally decided upon 2's complement for negative numbers, at this rate, they might agree on a byte being 8 bits wide by C35. Just give them some time...
The main problem that I have is that a lot of the complaints are overstated and/or from people who have no idea how to write C or even C++, consider this glorious example from a Rust shill.
C++:
void f() {
const std::string* s = new std::string("Just learn malloc and free like a white man. - Terry Davis");
// ... other code ...
// don't forget to call free!
}
I've never seen a C critic complain about an actual issue, e.g. the absolute state of unicode and text processing in general.
If they just move away from the obsession with portability and put out a C standard that is specifically x86/ARM (maybe RISC V too?) then most of the undefined behaviour will just go away. None of the code that I (or most people) write ever needs to be able to run on a IRIX workstation. This, along with an updated standard library (e.g. fixed width integers, real strings as standard, etc.), making the garbage collector easier to use (or not use), and including more of the tools in educational materials (e.g. clang tidy, the sanitisers, etc. not just the compiler), will go a long way to improving the situation.
What is C++ even? It doesn't seem to add much to C, what's even the point of using it? (Not that I've ever used it though.)
RAII is nice, if you're actually writing C++ and not C/C++ then manual memory management is a thing of the past (though it's still useful to understand); Operator/function overloading can make things a lot nicer to read; Templates are also nice if you use them as macros++. The worst thing about C++ is its (mostly) backwards compatibility with C.