Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么我的C程序提前关闭?_C - Fatal编程技术网

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

为什么我的C程序提前关闭?,c,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((ch

我现在有一个非常令人困惑的问题。我为自己编写了一个测试程序,但有时在输入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);
}
#包括
#包括
int main()
{
字符消息[140];
char*p=消息;
整数计数;
int i=0;
int charGT;
while((charGT=getchar())!=EOF)
{
消息[i]=charGT;
i++;
printf(“%d”,i);
}
printf(“下一个”);
计数=strlen(p);
printf(“%d”,计数);
printf(“之后”);
返回(0);
}
输入“asd\n^C”将导致我的程序提前结束。“下一步”或“之后”将不打印 我的理论是,不知何故,\n导致程序退出循环一段时间,然后Crtl+C退出程序,但我不知道这将如何工作。

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


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

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

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

在*nix上,
ctrl-C
向前台进程发送SIGINT。也就是说,它会杀死你的程序。EOF字符会根据你的操作系统而变化。你得小心那个。Windows、Unix和Linux的操作可能略有不同。哦!我懂了。所以做一个快速的谷歌,看起来Crtl+Z就是我要找的。谢谢。我应该提到我在Windows上运行这个吗?到目前为止,Crtl+D似乎什么也不做,只是添加了更多的输入,我只看到Crtl+C做了一些有意义的事情,而Ctrl+C有时实际上会继续执行程序。Hrm。。。还是Ctrl+Z?我很少输入捕捉。Ctrl+Z,后跟回车符。