Модификатор a
для scanf не будет работать, если вы компилируете с флагом -std=c99
; убедитесь, что вы этим не пользуетесь.
Если у вас есть как минимум версия 2.7 glibc, вы можете и должны использовать модификатор m
вместо a
.
Кроме того, вы обязаны освободить буфер.