我们手动输入‘c’时实现暂停,再按‘c’启动
时间: 2024-02-21 13:00:46 浏览: 29
如果您想在手动输入 'c' 时暂停程序,并在再次输入 'c' 时重新启动程序,可以使用以下 C 语言代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
volatile int flag = 0;
void signal_handler(int signal) {
flag = 1; // 设置标志位
}
int main() {
// 注册信号处理函数
signal(SIGINT, signal_handler);
printf("程序已经启动!\n");
while (1) {
if (flag == 0) {
// 输出一条消息,提示用户输入 'c' 暂停程序
printf("请输入 'c' 暂停程序:\n");
fflush(stdout);
}
char input_char = getchar();
if (input_char == 'c' && flag == 0) {
// 输入 'c' 并且程序没有被暂停,暂停程序
printf("程序已经暂停,请输入 'c' 继续程序...\n");
fflush(stdout);
flag = 1;
}
else if (input_char == 'c' && flag == 1) {
// 输入 'c' 并且程序被暂停,恢复程序
printf("程序已经恢复!\n");
fflush(stdout);
flag = 0;
}
else if (input_char == '\n') {
// 输入回车键,继续等待输入
continue;
}
else {
// 其他输入,提示用户重新输入 'c'
printf("请重新输入 'c' 暂停程序:\n");
fflush(stdout);
}
}
return 0;
}
```
代码中,我们首先定义一个整型的标志位 `flag`,用于记录程序是否被暂停。然后,定义一个信号处理函数 `signal_handler()`,该函数会在收到 `SIGINT` 信号时被调用,并设置标志位 `flag`。接着,使用 `signal()` 函数注册 `SIGINT` 信号处理函数。然后,进入一个无限循环,等待用户输入 'c'。当用户输入 'c' 并且程序没有被暂停时,程序会暂停,并等待用户输入 'c' 继续程序。当用户输入 'c' 并且程序被暂停时,程序会恢复,并继续等待用户输入 'c' 暂停程序。当用户输入回车键时,程序会忽略,继续等待用户输入 'c'。当用户输入其他字符时,程序会提示用户重新输入 'c' 暂停程序。最后,输出一条消息,表示程序已经恢复。
需要注意的是,在程序中,我们使用 `getchar()` 函数获取用户输入的字符,而不是使用 `scanf()` 函数,这是因为 `getchar()` 函数可以忽略回车键,而 `scanf()` 函数不能。如果您使用 `scanf()` 函数,程序会在用户输入 'c' 后立即暂停,而不是等待用户按下回车键。
阅读全文