Non-whitespace character, except percentage signs (%): Any character that is not either a whitespace character (blank, newline or tab) or part of a format specifier (which begin with a % character) causes the function to read the next character from stdin, compare it to this non-whitespace character and if it matches, it is discarded and the function continues with the next character of format.
How can a a non-format character match the data type of an input character? If it did match, it would then have to be a format character. Also, if it did match, why would you then discard the character? Maybe a definition of the term "match" would be helpful to clarify the issue.