The problem is the phrase knowing C is subjective. Some people think you can learn to read the syntax of a programming language and know it. Others think you need to know every little dark corner and gotcha to know a programming language.
I mean if you can read a menu in Spanish and figure out what to order at a Mexican restaurant, do you know Spanish? Or should you be able to translate any English document to Spanish and all the regional dialects with all the subtlety of each region's specific customs to know Spanish.
I know more than a few people that spent 4 years in high school learning Spanish, and can read it and pronounce the words correctly even with very convincing accents from different countries, but can't form anything more than rudimentary "where is the bathroom" type constructs on their own? The definitely do not know the language.
My opinion is to know a programming language, means you have advanced knowledge of the language, you need to be able to sit down and write good idiomatic code that doesn't look like another language you learned previously.
It means you use modern best practices, it means you know how to apply common programming algorithms in the most pragmatic idioms available in the language.
I means you know when and where to look for the right answer for things you don't know for things like standard libraries and frameworks rather than re-inventing something yourself. You don't need to know everything, but you do need to know how to find out what you don't know.
To me know means you can write high quality code in the language, not just make something work.
For Example: Python that looks like procedural C code, just with Python syntax and doesn't use any Pythonic idioms is not written by someone that knows Python. You don't need to use
lambda:, list comprehensions or crazy meta-programming constructs everywhere you possibly can, but know when to apply these idioms with restraint does point to that you know the language.
Knowing C means you should be able to write idiomatic C, that follows empirical best practices, no common newbie errors with
==, no memory leaks, write
includes that don't include everything over and over again, etc.
NOTE: Spanish is the straw man here, just like C is in the question. Replace Spanish with any other language, replace C with any other programming language, same subjective argument.