Проверка ввода данных на языке Си

Мне нужно сделать проверку входных данных на число. Если пользователь вводит не число, то программа его просит ввести данные заново.

Программа реагирует на входные данные по-разному. Если я ввожу "qwe" и потом введу "1", то программа все равно попросит ввести данные заново, но если я введу "11", то все будет нормально. И так далее - чем больше букв я ввел, тем больше нужно чисел, чтобы программа не потребовала вводить заново. Помогите, пожалуйста, я не понимаю, почему оно так работает.

#include <stdio.h>

int main(void) {
  printf("Введите n\n");
  char n[5];  
  a:;
  scanf("%s", n);
  int i = 0;
  while (i < 5){
    if ((n[i] < 48 || n[i] > 57) && n[i] != '\0'){
      printf("Введите число заново\n");
      goto a;
    }
    i++;
  }
  printf("%s\n", n);
  return 0;
}

Ответы (0 шт):