Почему он превращается в бесконечный цикл, если я даю значение char в качестве входных данных вместо int?
#include "stdafx.h" #include<stdio.h> int main() { unsigned int i, k = 0, l = 0, m = 0, j = 1; int x; do { printf("\nEnter the number of elements you want to enter (MAX VALUE 100) : "); scanf_s("%d,", &x); if (x >= 0&&x<=100) { int a[100]; for (i = 1; i <= x; i++) { printf("\nEnter the %d element : ", i); scanf_s("%d", &a[i]); if (a[i] > 0) ++k; if (a[i] < 0) ++l; if (a[i] == 0) ++m; j++; } } else printf("\nInvalid entry"); } while (j <= 1); printf("\nNo of Positive numbers are : %d\nNo of Negative numbers are : %d\nNo of zeros are : %d\n", k, l, m); return 0; }
Приведенная выше программа просто подсчитывает количество положительных, отрицательных и нулевых чисел в последовательности чисел, введенных пользователем. Я поставил небольшую проверку с помощью do while loop, является ли максимальный диапазон, заданный пользователем, допустимым числом или нет, но что делать, если пользователь вводит символ или специальный символ(ну, я сам пробовал, это оказывается бесконечный цикл), Как выполнить проверку для него, чтобы избежать попадания программы в бесконечный цикл, а также я хочу знать, почему он входит в бесконечный цикл при вводе символа или символа.
Что я уже пробовал:
Я пробовал вводить символ/символ в качестве входного сигнала, он дает выход, как следующие бесконечные времена.
Введите количество элементов, которые вы хотите ввести: $
Недействительная запись
Введите количество элементов, которые вы хотите ввести :
Недействительная запись
Введите количество элементов, которые вы хотите ввести :
Недействительная запись
.
.
СТРЕМИТСЯ К БЕСКОНЕЧНОСТИ