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

标签 c linux windows macos freeze

我为一门类(class)编写了这段代码。

#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'

挂起

关于c - 程序在 Linux 和 Windows 上挂起,似乎在 Mac 上运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28400160/

相关文章:

c - Scanf 不接受 double 类型的输入

c - 从c代码到时序图的逆向工程

c - 如果在没有 "__attribute__(align(8))"的情况下声明结构,如何生成警告

windows - 我可以下载\使用 MSDN 许可证做什么?

java - 交叉部署 Java

windows - NMake 在使用 $(shell) 时返回错误

c - 为什么我可以右移两位来访问 odroid 板上的 GPIO?

mysql - 如何找到适合我的 mysql 版本的语法?

linux - 在 Linux 上寻找 Perforce 的差异编辑器,类似于 Beyond Compare?

linux - 在 C++ 链接期间,在 Ubuntu 12.04 中找不到库