C++ 在c+中捕捉ctrl-c+;原因忽略扫描
我正试图抓住Ctrl+c。我在谷歌上搜索并找到以下代码:C++ 在c+中捕捉ctrl-c+;原因忽略扫描,c++,C++,我正试图抓住Ctrl+c。我在谷歌上搜索并找到以下代码: #include <windows.h> #include <iostream> #include <signal.h> #include<cstdio> using namespace std; BOOL WINAPI ConsoleHandler(DWORD CEvent){ if(CEvent == CTRL_C_EVENT){ cout<<"ct
#include <windows.h>
#include <iostream>
#include <signal.h>
#include<cstdio> using namespace std;
BOOL WINAPI ConsoleHandler(DWORD CEvent){
if(CEvent == CTRL_C_EVENT){
cout<<"ctrl c pressed"<<endl;
Sleep(100);
}
return TRUE; }
int main(int argc, char *argv[]){
char a[10];
if (SetConsoleCtrlHandler( (PHANDLER_ROUTINE)ConsoleHandler,TRUE)==FALSE){
cout<<"Unable to install handler!";
return -1;
}
while(true){
fflush(stdin);
scanf("%[^\n]s",a);
cout<<a<<endl;
} }
#包括
#包括
#包括
#包括使用名称空间标准;
布尔WINAPI控制台手柄(DWORD CEvent){
如果(CEvent==CTRL\U C\U事件){
cout再次输出“abcd”的原因是它仍然在上次的a
变量中。修复它的最佳方法是使用scanf
的返回值scanf
返回填写的项目数,因此在您的情况下,您希望它返回1
if (scanf("%[^\n]s", a) == 1)
cout<<a<<endl;
if(scanf(“%[^\n]s”,a)==1)
当用户按下Ctrl+C时,除了显示Ctrl+C按下之外,您还希望发生什么?