My initial reading of this was that type modifiers were probably not supported. But they are, and this is actually documented further up, in the type modifiers documentation. But to make it clearer, let's copy the language that printf(3) has in its %n section. Signed-off-by: Alyssa Ross <hi@xxxxxxxxx> --- I plan to submit a similar clarification to the glibc documentation. man3/scanf.3 | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/man3/scanf.3 b/man3/scanf.3 index f353f1d4d..8c0a1fa84 100644 --- a/man3/scanf.3 +++ b/man3/scanf.3 @@ -513,18 +513,20 @@ circumflex, in) set or when the field width runs out. .TP .B n Nothing is expected; instead, the number of characters consumed thus far from the input is stored through the next pointer, which must be a pointer to -.IR int . +.IR int , +or variant whose size matches the (optionally) +supplied integer length modifier. This is .I not a conversion and does .I not increase the count returned by the function. The assignment can be suppressed with the .B * assignment-suppression character, but the effect on the return value is undefined. Therefore .B %*n conversions should not be used. -- 2.30.0