为什么我的C程序提前关闭?

时间:2013-02-11 04:39:53

标签: c

我现在遇到一个非常令人困惑的问题。我为自己编写了一个测试程序,但有时在我输入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”将导致我的程序提前结束。 “next”或“after”将不会被打印 我的理论是,不知何故,\ n导致程序退出循环一段时间,然后Crtl + C退出程序,但我不知道它会如何工作。

3 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:3)

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

答案 2 :(得分:1)

当程序运行时,如果按Ctrl-c,将发送信号以中止程序并中止程序。但是,如果要使用Ctrl-c作为输入而不是中止程序,请编写一个信号处理程序,当您按Ctrl-c并执行所需的操作时,该处理程序将捕获信号。