如何使用ctrl+;windows上的c中的c?
因此,我需要为一个程序编写一个whileloop,该程序应该向用户提示以下内容:如何使用ctrl+;windows上的c中的c?,c,windows,eof,C,Windows,Eof,因此,我需要为一个程序编写一个whileloop,该程序应该向用户提示以下内容: char vector[10]; while(????){ print("Write a number"); scanf("%s",vector); } printf("Goodbye"); 当用户按下ctrl+c时,程序应该打印再见并关闭。 我很确定我不能在这种情况下使用putchar?请参阅: 取决于你所说的“放弃某事”是什么意思;在Windows cmd中: Ctrl+Z发送EOF字符,如
char vector[10];
while(????){
print("Write a number");
scanf("%s",vector);
}
printf("Goodbye");
当用户按下ctrl+c时,程序应该打印再见并关闭。
我很确定我不能在这种情况下使用putchar?请参阅:
取决于你所说的“放弃某事”是什么意思;在Windows cmd中:
Ctrl+Z发送EOF字符,如果
您正在提供输入,但在其他方面可能什么也做不了
Ctrl+C通常将SIGINT发送到前台进程,前台进程应该
终止它,但程序可以按照自己的喜好进行响应-即,它们
可以捕捉到信号,然后忽略它。该命令也可以是
重新映射到其他作业(例如,对于特定程序,它不会
真正发出信号)或完全忽略
Ctrl+Break始终发送SIGBREAK,这将再次终止
进程,但与Ctrl+C不同的是,不能重新映射,但仍然可以
忽略。这可能是你需要的
我想这可能就是你想要的:
在堆栈溢出上发布与此类似的帖子: 你可能想看看。干杯
#包括
#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;
}
#包括
静态结束标志=0;
布尔WINAPI控制处理器(DWORD类型){
如果(类型==CTRL\U C\U事件){
结束标志=1;
返回TRUE;
}
返回FALSE;
}
int main(){
字符向量[10];
if(!setConsoletrlHandler(controlHandler,TRUE)){
fprintf(stderr,“失败的SetConsoleCtrlHandler”);
返回-1;
}
while(!end_标志){
printf(“写一个数字”);
扫描频率(“%s”,矢量);
}
printf(“再见”);
返回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;
}
#包括
int main(){
字符向量[10];
而(1){
printf(“写一个数字”);
如果(scanf(“%s”,vector)=EOF)//按CTRL+Z
打破
}
printf(“再见”);
返回0;
}
@ajay什么是EOF字符?常量EOF是一个常量,应该不同于任何其他字符。我想我们应该使用EOF,但我只想用某种ctrl+摆脱whileloop?谢谢,练习实际上是在Linux中用ctrl+D结束whileloop,在windows上会是什么样?谢谢,这个练习实际上是在Linux中以ctrl+D结束I,在windows上有什么相同之处?谢谢,它很有效!,哎哟,对我来说太复杂了,我还有一个问题,实际上whileloop中有几行代码,我不想在用户按下ctrl+c后运行?有任何救援吗?@Tensora我认为它使用exit(1)
而不是设置标志。ctrl+z版本工作正常,因为它现在刹车,但是它打印z^,然后用户必须按enter键一次才能退出循环。我有一些真正的问题,我的意思是,有没有办法让程序退出循环而不按回车键?@Tensora使用getch或kbhit或key status…,但在你自己做的每件事中。这是不现实的,因为没有准备就再也不行了。您需要按CTRL+C组合键并退出。