Если ввод недопустим, функция делает рекурсивный вызов самому себе, но ничего не делает с возвращаемым значением рекурсивного вызова. Это означает, что будет возвращено неверное значение, которое было прочитано в текущем вызове.
Измените функцию, чтобы она возвращала значение рекурсивного вызова. Кроме того, избавьтесь от параметра функции, поскольку он не используется, и сделайте s
локальным. Вам также следует инициализировать s
некоторым известным значением и проверить возвращаемое значение scanf
на случай, если ничего не будет прочитано.
int menuSize(void)
{
int s = -1;
printf(" Please Enter size: ");
int rval = scanf("%i", &s);
if (rval == 1 && s>0) {
return s;
} else {
printf(" Invalid Input\n");
getchar();
return menuSize();
}
}