I have to do a short assignment for my introductory C class, where I have to ask for a number "N" from the user and calculate it's factorial. The requirements were for me to create a function with the prototype long int factorial(int N). I managed to do it, but I'm confused as to why my code is working with a specific change I made. Here is my code:
#include <stdio.h>
long int factorial(int);
int main(void)
{
    int N;
    printf("Enter a number: ");
    scanf("%d", &N);
    printf("The factorial of %d is: %ld", N, factorial(N));
    return 0;
}
long int factorial(int N)
{
    long int result=1 ;
    int i;
    for(i=1; i<=N; i++)
        result = result * i;
    return result;
}
My code at this point didn't work, and would just return the result of N+1 (if I input 5 for example, it would output 6). I was tweaking random things at this point to see what was the problem, and the removal of "void" in my main function fixed it. The problem is, I don't understand why.
#include <stdio.h>
long int factorial(int);
int main()
{
    int N;
    printf("Enter a number: ");
    scanf("%d", &N);
    printf("The factorial of %d is: %ld", N, factorial(N));
    return 0;
}
long int factorial(int N)
{
    long int result=1 ;
    int i;
    for(i=1; i<=N; i++)
        result = result * i;
    return result;
}
Could anyone explain why the removal of void in my code fixed this?
