Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

calling main function in C

#define f(x) (x*(x+1)*(2*x+1))/6
void terminate();
main()
{
   int n,op;
   char c;
   printf("Enter n value\n");
   scanf("%d",&n);
   op=f(n);
   printf("%d",op);
   printf("want to enter another value: (y / n)?\n");
   scanf("%c",&c);   // execution stops here itself without taking input.
   getch();
   if(c=='y')
    main();
   else
    terminate();
   getch();

 }
void terminate()
{
exit(1);
}

In the program above , I want to take input from the user until he enters an n value. For this I'm trying to call main() function repeatedly . If it is legal in C , I want to know why the program terminates at the scanf("%c",&c) as shown in commented line. Someone , please help.

like image 509
Ritesh Avatar asked Nov 17 '25 22:11

Ritesh


1 Answers

You should never call main from within your program. If you need to run it more then once use a while loop inside it.

Your execution stops because by default stdin in a terminal is line buffered. Also you are not using the return value from getch.

int main()
{
   int n,op;

    char c;
    do {
        printf("Enter n value\n");
        scanf("%d",&n);
        op=f(n);
        printf("%d",op);
        printf("want to enter another value: (y / n)?\n");
        scanf("%c",&c);
    } while (c == 'y')

    return 0;
}
like image 96
Sergey L. Avatar answered Nov 20 '25 15:11

Sergey L.



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!