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」と入力すると、プログラムが早く終了します。「next」または「after」は出力されません私の理論では、どういうわけか、\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 を押して必要なアクションを実行したときにシグナルをキャッチするシグナルハンドラーを 1 つ作成します。

于 2013-02-12T04:05:32.713 に答える