所以我需要为一个程序编写一个while循环,该程序应该提示用户:
char vector[10];
while(????){
print("Write a number");
scanf("%s",vector);
}
printf("Goodbye");
当用户按下ctrl + c时,程序应打印再见并关闭。 我很确定在这种情况下我不能使用putchar吗?
答案 0 :(得分:1)
#include <windows.h>
#include <stdio.h>
static end_flag = 0;
BOOL WINAPI controlHandler(DWORD type){
if(type == CTRL_C_EVENT){
end_flag = 1;
return TRUE;
}
return FALSE;
}
int main(){
char vector[10];
if (!SetConsoleCtrlHandler(controlHandler, TRUE)) {
fprintf(stderr, "Failed SetConsoleCtrlHandler");
return -1;
}
while(!end_flag){
printf("Write a number ");
scanf("%s",vector);
}
printf("Goodbye");
return 0;
}
CTRL + Z版
#include <stdio.h>
int main(){
char vector[10];
while(1){
printf("Write a number ");
if(scanf("%s", vector)==EOF)//press CTRL+Z
break;
}
printf("Goodbye");
return 0;
}
答案 1 :(得分:0)
请参阅https://superuser.com/questions/214239/whats-the-command-prompts-equivalent-to-cygwins-ctrlz:
取决于“退出某事”的意思;在Windows cmd中:
Ctrl + Z发送EOF字符,如果可以终止进程 你提供输入,但否则可能什么都不做。
Ctrl + C通常会将SIGINT发送到前台进程,这应该是 终止它,但程序可以响应他们喜欢的 - 即他们 可以捕获信号然后忽略它。该命令也可以 重新映射到其他工作(对于特定程序,它不会 真的发送信号)或完全忽略。
Ctrl + Break总是发送SIGBREAK,它应该再次终止 进程,但不像Ctrl + C不能重新映射,但仍然可以 忽略。这可能就是你所需要的。
答案 2 :(得分:0)
答案 3 :(得分:0)
在Stack Overflow上发布与此类似的帖子: Catch Ctrl-C in C
您可能想要查看它。干杯!