2

system( "pause")を使用すると、「続行するには任意のキーを押してください...」という行が画面に表示されます。

これは苛立たしく、出力の読み取りを非常に面倒にします。

これが来るのを防ぐ方法はありますか?

4

6 に答える 6

6

続行するには任意のキーを押したいが、画面に「続行するには任意のキーを押してください」を表示したくないということですか?これを試してみてください。これgetchar();により、キーボードから入力する1文字がキャプチャされ、続行されます。

于 2013-02-23T10:11:24.713 に答える
5

プラットフォームに依存するのではなく、プラットフォームに依存せずに使用system("pause")できますstd::cin.get()。バッファがそれを混乱させている場合は、次を使用できます。

std::cin.ignore(std::numeric_limits<std::streamsize>::max(),'\n')

バッファをクリアする前に。

于 2013-02-23T10:13:08.743 に答える
3

Windowsを使用していると仮定して、system("pause")をに置き換えますsystem("pause > NULL")

于 2013-02-23T10:11:32.537 に答える
1

まず、危険ですので絶対に使用しないでください。system("pause")コードは理由もなく外部システム プロシージャを呼び出します。クラッカーは、「一時停止」コマンドを他のコマンドに置き換える方法を見つけて、あなたのプログラムにあなたのユーザー権限で他のプログラムを呼び出させることができます.

つまり、メッセージがデバイスに送信されるのを避けることができますnull

  • Windows の場合:

    一時停止 > ヌル

そして、この恐ろしいシステムコールを移植可能にするために大胆になりたい場合は、次を使用できます。

  • Linux の場合:

    echo Press any key to continue ...; ×を読む

これで、ORAND (論理結合子) を両方に適用して、両方のシステムで機能するシステム コールを作成できます。

void pause(void)
{
    system("echo Press any key to continue . . . && ( read x 2> nul; rm nul || pause > nul )");
    return;
}

Linux はこのキーワードを認識しないため、「nul」という一時ファイルを作成します。Linux の null デバイスは/dev/null、 だけでなく、 ですnul。その後、コマンドはこの一時ファイルをrm nul. そのため、たまたまnul同じディレクトリに名前の付いたファイルがある場合は、このコマンドは役に立たないことに注意してください (さらに別の理由により)。

このコマンドはオリジナルを模倣しています。メッセージを避けたい場合は、メッセージのecho Pres...一部を削除してください。


ボーナス:

  • system?を使用して端末画面をポータブルにクリアします。(いいえ、同じ理由でこれをしないでください。危険です。)しかし、テスト目的で、次を使用できます。

system("cls||clear");


避けてくださいpause。C は言語であり、存在する最も強力な言語の 1 つです。pauseCのみを使用してaを作成する方法があると確信しています(getchar()またはscanf()たとえば)。

于 2015-11-30T05:22:17.917 に答える
0

その行はの一部ですsystem("pause")getline(std::cin, variable)またはなどの別の方法を試すことができますcin.get()

于 2013-02-23T10:13:08.187 に答える