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

时间:2015-02-08 22:33:23

标签: c linux windows macos hang

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

#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上试过它的人交谈了,他说代码可以运行。

但是没有出现任何错误。

任何想法如何解决?

1 个答案:

答案 0 :(得分:5)

变化:

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

scanf("%i", &numbersToPrint);

scanf挂起'\n'

,请参阅c-faq
相关问题