0

spac/blank が見つかったときに scanf を停止する必要があります。

例として

「E E」と入力すると、必要な「E」は 1 つだけなので、スペース/空白で停止する必要があります。

char end[] = "E";
char end1[] = "End";
char info[] = "";

while(run) {
 scanf("%s", &info);
 ...
 else if(strcmp(info, end) == 0 || strcmp(info, end1) == 0) {
    end_of_turn();
 }
 ...
}

ここでの問題は、「E E」と入力すると、「end_of_turn」が 2 回実行されることです。

なぜそうなのか誰か知っていますか?

編集:

プログラムが停止してしまうため、while ループを中断することはできません。

4

3 に答える 3

2

ループbreakから抜け出すために使用しますか?while電話した後end_of_turn()

またはgoto、ループから抜け出したくない場合は、ステートメントを使用します。

入力ストリームからすべての文字を取得し、コードを使用してそれらを破棄することもできます。while(getchar() != '\n') ;

于 2013-02-04T23:01:30.243 に答える
0

%[フォーマット指定子を使用して、特定の文字のみに一致させることができるようです。スペースを除外するには、 を使用すると思います%[^ ]

于 2013-02-04T23:56:26.363 に答える
-1

infoスペース文字の検索で保存された文字列をループし' 'ます。見つかった場合は、残りの文字列を次のように設定します。\0

于 2013-02-04T23:15:04.580 に答える