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