I would recommend using a traditional for loop, as there is no need to spawn sub-processes or expand 100 arguments:
N=100
for((i = 0; i < $N; ++i)); do
printf -
done
It is curious that printf -%s triggers "invalid option" but printf - does not. To perhaps be extra safe, you could do printf %s -.