0

我现在有一个非常令人困惑的问题。我为自己编写了一个测试程序,但有时在我输入 Crtl+C(我认为它是 EOF)后,程序提前关闭,而没有运行我希望它取消的 While 循环下方的更多命令。

#include <stdio.h> 
#include <string.h>

int main()
{
char message[140];
    char* p = message;
     int count;
int i = 0;
    int charGT;
    while((charGT=getchar()) != EOF) 
    {
        message[i] = charGT;
        i++;
        printf("%d" , i);
    }
    printf("next");
    count = strlen(p);
    printf("%d", count);
    printf("after");
    return (0);
}

输入“asd\n^C”会导致我的程序提前结束。不会打印“下一个”或“之后”我的理论是,不知何故, \n 导致程序跳出循环一会儿,然后 Crtl+C 退出程序,但我不知道那将如何工作。

4

3 回答 3

3

Ctrl+C是中断命令,它将向您的应用程序发送中断信号。默认处理程序将导致它退出进程。

Ctrl+D是您要查找的 EOF 命令。

于 2013-02-11T04:42:17.073 回答
3

要在 Windows 上运行,要输入 EOF,请按Ctrl+Z,然后按 ENTER。在 UNIX 系统中为 Ctrl+D,在 Windows 中为 Ctrl+Z。

于 2013-02-11T13:45:38.573 回答
1

当程序运行时,如果您按下 Ctrl-c,则会发送一个信号以中止程序并且程序被中止。但是,如果您想使用 Ctrl-c 作为输入但不中止程序,请编写一个信号处理程序,当您按下 Ctrl-c 并执行您想要的操作时它会捕获信号。

于 2013-02-12T04:05:32.713 回答