c - 如何在 Windows 上用 c 中的 ctrl+c 结束 while 循环?

标签 c windows eof

所以我需要为一个程序编写一个 whileloop 来提示用户:

char vector[10];
while(????){
    print("Write a number");
    scanf("%s",vector);
}

printf("Goodbye");

当用户按 ctrl+c 时,程序应该打印出再见并关闭。 我很确定在这种情况下我不能使用 putchar?

最佳答案

#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;
}

关于c - 如何在 Windows 上用 c 中的 ctrl+c 结束 while 循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21816352/

相关文章:

windows - 在文件中使用 cygwin 将 windows 路径转换为 ​​unix 路径的命令

perl - 检查到 websocket 的连接是否仍然使用 Net::Async::WebSocket 打开

C 和 OpenCV 内存泄漏

c - FFT 实现及其输出的使用

c - 从内存地址转移数据

c - C中thread_local对象初始化为0吗?

windows - IntelliJ 终端 CTRL+C 不起作用

c - 如何从 C 语言安装的文本文件中获取变量

c - fgetc() 无法正常工作

image - Docker - 从 docker repo 拉取失败 (EOF/403) 但从 RH repo 下载有效