2013-02-11 58 views
0

我現在有一個非常混亂的問題。我爲自己編寫了一個測試程序,但是有時在輸入Crtl + C之後,我認爲它是EOF,程序提前關閉,但沒有通過while循環下面的一些命令,我​​希望它取消。爲什麼我的C程序提前關閉?

#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正在退出程序,但是我沒有知道如何工作。

+1

在* -nix上,'ctrl-C'發送SIGINT到前臺進程。也就是說,它會殺死你的程序。 – 2013-02-11 04:41:51

+0

EOF字符因操作系統而異。你必須小心那個。 Windows,Unix和Linux可能會略有不同。 – TheLazyChap 2013-02-11 04:45:11

+0

哦!我懂了。所以做一個快速的谷歌,看起來像Crtl + Z是我正在尋找。謝謝。 – user2019645 2013-02-11 04:50:40

回答

3

Ctrl + C是break命令,它會向您的應用程序發送中斷信號。默認處理程序將導致它退出進程。

按Ctrl +d是你正在尋找的EOF命令。

+0

我應該提到我在Windows上運行這個嗎? Crtl + D似乎沒有做任何事情,但增加了更多的輸入到目前爲止,我只看到Crtl + C做了任何有意義的事情,而Ctrl + C有時實際上是繼續下去。 – user2019645 2013-02-11 04:46:43

+0

Hrm ...還是Ctrl + Z?我很少輸入捕捉。 – PQuinn 2013-02-11 04:49:00

+1

Ctrl + Z,然後回車。 – 2013-02-11 04:52:01

3

對於在窗口上運行,輸入EOF按Ctrl + Z然後按ENTER鍵。在UNIX系統中,它是Ctrl + D,在Windows Ctrl + Z中。

1

當一個程序正在運行,如果你按下Ctrl-c發送一個信號來中止程序並且程序被中止。但是,如果您想使用Ctrl-c作爲輸入,但不能中止程序,請在寫入一個信號處理程序時按Ctrl-c並執行您想要的操作時捕獲信號。

相關問題