Вы не можете ограничивать символы, вводимые пользователем. Вы должны прочитать все, что пользователь дает вам, и решить, что с ним делать.
Если вы хотите использовать scanf, это может быть так:
int ret = scanf("%d", &num);
Возвращаемое значение
scanf
показывает количество %
s, которые оно успешно прочитало. Например:
12 <-- this input returns 1, num will be 12
asd <-- this input returns 0, num will be untouched
123xf <-- this input returns 1, num will be 123
В последнем примере xf
останется на входе, и далее scanf
s прочитает его.
Таким образом, для первого if
вы просто проверяете, является ли возвращаемое значение scanf
равным 1. Если нет, то вы не можете прочитать число из ввода.
Для второго if
проверьте, если num <= 0