Variable-length arrays are legal in C since C99, but if you’re using an older compiler (or compiling as C++) they won’t work.
As a workaround, you can switch to using dynamic allocation:
typedef unsigned long long uint64; // just for convenience
uint64* Fibonacci = (uint64*)malloc(sizeof(uint64)*numFibs);
// {code here}
// then at the end:
free(Fibonacci);
return 0;
Sample:
int main()
{
int i, numFibs;
printf("How may Fibonacci numbers do you want (between 1 to 75)? ");
//scanf("%i", &numFibs);
numFibs = 10;
if ( numFibs < 1 || numFibs > 75){
//if ( numFibs < 1 || numFibs > kMaxFibs){
printf("Bad number, sorry!\n");
return 1;
}
typedef unsigned long long uint64; // just for convenience
uint64* Fibonacci = (uint64*)malloc(sizeof(uint64)*numFibs);
Fibonacci[0] = 0; // by definition
Fibonacci[1] = 1; // ditto
for ( i = 2; i < numFibs; ++i)
Fibonacci[i] = Fibonacci[i-2] + Fibonacci[i-1];
for ( i = 0; i < numFibs; ++i)
printf("%11u",Fibonacci[i]);
printf("\n");
free(Fibonacci);
return 0;
}