程序在 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'
挂钩
我为一门课程编写了这段代码。
#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'