В вашем коде,
C11
это неопределенное поведение. fscanf
ожидает, что аргумент будет указателем на целочисленный тип sign ( int
).
Цитирование *
, глава A§7.21.6.2, SCNu
функция
[...] Если подавление присваивания не было указано а
N
, результат преобразования помещается в объект, на который указывает первый аргумент, следующий за аргументом формата, который еще не получил результат преобразования. Если этот объект не имеет соответствующего типа или если результат преобразования не может быть представлен в объекте, поведение не определено.
Тем не менее, fscanf
N
макрос для fprintf()
семьи, у PRIu
семьи есть аналоги N
N
.