程序在 Linux 和 Windows 上挂起,似乎在 Mac 上运行

Program hangs on Linux and Windows, Seems to work on Mac

我为一门课程编写了这段代码。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
    int i;
    int numbersToPrint;
    int fibonacci[50] = {0,1};
    int defaultOrCustom;

    printf("Do you want to run the default length of 15 numbers, or do you want to define your own length?\n1.Default\n2.Custom\n");
    scanf("%i", &defaultOrCustom);

    switch (defaultOrCustom){
            case 1:
                for (i = 2; i < 15; i++)
                {
                    fibonacci[i] = fibonacci[i-1] + fibonacci[i-2];
                    printf("%i, ", fibonacci[i]);
                }
            break;

            case 2:
                printf("How many numbers in the sequence do you want to print?\n");
                scanf("%i\n", &numbersToPrint);
                printf("%i", numbersToPrint);
                for (i = 2; i< numbersToPrint; i++)
                {
                    fibonacci[i] = fibonacci[i-1] + fibonacci[i-2];
                    printf("%i\n", fibonacci[i]);
                }
            break;

            default:{
                printf("Please choose a valid option:\n");
                main();
            }
    }
    return 0;
}

我的问题似乎是程序在第 2 行之后挂起:

printf("%i", numbersToPrint);

我已经在 Linux 和 Windows 上验证了这一点,并与在 Mac 上尝试过的人交谈过,他说代码有效。

但是没有出现错误。

有什么解决办法吗?

变化:

scanf("%i\n", &numbersToPrint);

scanf("%i", &numbersToPrint);

参见 c-faq scanf'\n'

挂钩