2012-02-21 21 views
1

プログラムの完了時にPress any key to exitの行に沿って何かできるようにしたいが、どのようにするか分からない。Cでのプログラム完了時に画面を一時停止

プログラムを実行すると、端末が終了して結果が表示されます。

//by Nyxm 
#include <stdio.h> 

main() { 

    int temp, x, flag, num, size; 

    printf("\nEnter how many numbers you wish to enter: "); 
    scanf("%d", &size); 
    int array[size]; 

    for (x = 0; x < size; x++) { 
     printf("Enter an integer: "); 
     scanf("%d", &num); 
     array[x] = num; 
    } 

    printf("Please enter either 1 or 2\n1:\tAscending\n2:\tDescending\n\n..."); 
    scanf("%d", &num); 

    if (num == 1) { 
     flag = 0; 
     while (flag == 0) { 
      flag = 1; 
      for (x = 1; x < size; x++) { 
       if (array[x] < array[x-1]) { 
        flag = 0; 
        temp = array[x]; 
        array[x] = array[x-1]; 
        array[x-1] = temp; 
       } 
      } 
     } 
     } else { 
     flag = 0; 
     while (flag == 0) { 
      flag = 1; 
      for (x = 1; x < size; x++) { 
       if (array[x] < array[x-1]) { 
        flag = 0; 
        temp = array[x]; 
        array[x] = array[x-1]; 
        array[x-1] = temp; 
       } 
      } 
     } 
    } 

    printf("\nYour sorted array:\n"); 
    for (x = 0; x < size; x++) { 
     printf("%d\n", array[x]); 
    } 
} 

それはすべての違いを、私は、WubiMonoDevelopを使用しています。

+3

開発環境はWindowsまたはLinux(または*その他*)ですか? – hatboyzero

+1

より良い端末エミュレータを使用してください。 –

+2

開発環境を修正してください。実際のプログラムは、そんなことに邪魔されるべきではありません。 –

答えて

17

このクイックハックを行うには、最も一般的な2つのオプションがあります。

/* Windows only */ 
#include <stdlib.h> 

system("pause"); 

/* Cross platform */ 
#include <stdio.h> 

printf("Press enter to continue...\n"); 
getchar(); 

私は後者の方法を提案し、けれども最初の方法は本当に "任意の"キーをトリガし、下の方のキーはエンターキーだけをトリガします。

+0

これらのどちらも私にとっては役に立ちません。私はWubiでMonoDevelopを使用しています。 – Nyxm

4

使用getchar()

...program... 
printf("press enter to continue...\n"); 
getchar() 
1

必要とプラットフォームに応じて、getch()(または_getch())、または最終的にgetchar()を使用できます。

getchar()の問題は、ユーザーが「enter」を押す必要があることです。 getchar()の利点は、標準およびクロスプラットフォームであることです。

getch()他のすべてのプロパティを取得します。キーを押すだけで、ディスプレイは表示されず、「入力」も必要ありません。しかし、それは非標準的なので、サポートはプラットフォームによって異なります。

また、ウィンドウのみのため、もあります:

system("pause"); 
+0

この制限は、文字モードに設定しない限り、getchar()が行末を待たずに最初の文字で返る点を除いて、通常はライン入力モードにあるUnixタイプの端末から発生します。 –

1

利用可能なオプション: 1)system( "pause"); 2)getch(); 3)getchar();

0

これは古い質問ですが、Windowsのボックスでプログラムをテストするときに使用する手法を追加すると思います。

プログラムをexeにコンパイルします。そして、の線に沿ってプログラムを「ラップ」するバッチスクリプトを作成します。

それがあるべきようウィンドウを一時停止し、出力を確認できるようにしながら、どんな汚いハックせずに、あなたのプログラムを実行します
@echo off 
foo.exe 
pause 
exit 

関連する問題