【发布时间】:2020-10-03 16:51:56
【问题描述】:
我用 C 编写了一个斐波那契数列。它运行良好,并且提供的数字也超过 3e100。
但我的问题是,用户想要在中间停止打印过程并退出循环,如何捕获用户输入?
例如,如果他输入他想要系列的前 100 个数字,然后改变主意并想退出打印过程,而它在中间。该怎么做?
我想过在循环运行时捕获^c (CTRL+C),但我不确定如何做到这一点。
这是我的代码:
printf("Welcome to Fibonacci Series Mode.\n\nEnter how many numbers do you want from the series, from the start: ");
scanf("%d", &N);
x = 0;
y = 1;
F = 3;
Numbering = 3;
printf("Here is Your Series:\n\n");
if (N == 1)
{
printf("[1] 0\n");
Sleep(1000);
}
if (N == 2)
{
printf("[1] 0\n");
Sleep(75);
printf("[2] 1\n");
Sleep(1075);
}
if (N == 3)
{
printf("[1] 0\n");
Sleep(75);
printf("[2] 1\n");
Sleep(75);
printf("[3] 1\n");
Sleep(1075);
}
if (N > 3)
{
printf("[1] 0\n");
Sleep(75);
printf("[2] 1\n");
Sleep(75);
}
while (N > 3 && F <= N)
{
xy = x + y;
printf("[%.0d] %.5g\n", Numbering, xy);
Sleep(75);
x = y;
y = xy;
F++;
Numbering++;
}
Sleep(1000);
}
这只是我整个代码的一部分,我没有在这里包含,这就是为什么你看不到 main() 和头文件的原因。
【问题讨论】:
-
是否存在非法值,如
-1? -
@FiddlingBits 我不这么认为。导致其所有正整数
-
这能回答你的问题吗? Ctrl + C interrupt event handling in Linux
-
@FiddlingBits 我理解负数的部分,但是我如何在循环运行时捕获负数?
-
我看不出有什么问题:Ctrl-C 将中断您的程序,而无需您做任何特别的事情。所以我不确定你是否尝试过你想要的:你可能会对它已经工作感到惊讶。 Ctrl-C 将立即结束程序,然后用户可以使用不同的输入重新运行它。如果你想要一些其他的行为,你必须用简单的英语陈述你想要的。