В этой факториальной программе при вводе любого нечислового или отрицательного числа программа должна запросить рентацию значения, но на выходе программа завершается.
Это потому, что я возвращаю -1
в display()
функцию?Если это так, то обязательно ли возвращать значение переменной (или другой функции) в функцию, если функция должна возвращать значение?
#include <stdio.h>
int display();
void fact_fun(int num_fact);
int main() {
int num = 0;
char next;
next = display();
if (next == -1) { //WHEN ANY CHARACTER OR NEGATIVE NUMBER IS ENTERED IT WILL ASK TO RENTER
printf("\nOnly positive number is allowed");
display();
}
while (next >= 0) { //WHEN NEGATIVE NUMBER IS ENTERED IT WILL END THE LOOP
num = next;
fact_fun(num);
next = display();
}
return 0;
}
int display() {
char inp[10] = { 0 };
int input;
int index = 0;
printf("\nEnter number to find factorial or press ENTER KEY to exit: ");
while (((input = getchar()) != EOF) & (index < 10)) {
if ((input >= '0') && (input <= '9')) {
inp[index++] = input;
} else
if (input == '\n')
break;
else
return -1;
}
input = atoi(inp);
return input;
}
void fact_fun(int num_fact) {
int fact = 1;
if (num_fact == 0) {
printf("\nFactorial of %d is 1", num_fact);
return;
} else {
for (int i = 1; i <= num_fact; i++) {
fact = fact * i;
}
printf("\nFactorial of %d is %d", num_fact, fact);
}
}
Также, когда я нажимаю клавишу ВВОД, я получаю вывод, как показано ниже:
Factorial of %d is 1
Enter number to find factorial or press ENTER KEY to exit:
И при вводе \n
программа завершается.Насколько я понимаю, это должно относиться к клавише Enter и \n
то же самое.Если нет, то в чем разница и как проверить значение клавиши ENTER KEY?