The reason is strict adherence to c99, which prohibits some existing GNU extension conversion specifications.
In glibc 2.17, in libio/stdio.h there is this comment:
extern int __REDIRECT (fscanf, (FILE *__restrict __stream, const char *__restrict __format, ...), __isoc99_fscanf) __wur; extern int __REDIRECT (scanf, (const char *__restrict __format, ...), __isoc99_scanf) __wur; extern int __REDIRECT_NTH (sscanf, (const char *__restrict __s, const char *__restrict __format, ...), __isoc99_sscanf);
ouah
source share