1
char theInput[10];
long option;
int innerLoop = 1;
char *dunno;
while(innerLoop == 1){
printf("\nType '1' to get your change, '2' to select another item, or '3' to add more funds: ");
fgets(theInput, sizeof theInput, stdin);
option = strtol(theInput, &dunno, 10);
if(option == 1){
loop = 0;
innerLoop = 0;
}else if(option == 2){
loop = 1;
outerLoop = 1;
innerLoop = 0;
firstLoop = 0;
}else if(option == 3){
loop = 1;
innerLoop = 0;
outerLoop = 1;
firstLoop = 1;
}else{
printf("\nInvalid input, please try again.\n");
innerLoop = 1;
}
}
このコードの結果は、最初に実行されたときに "Type '1'を出力し、改行の後に「入力が無効です。もう一度やり直してください。コマンドラインから何も入力せずに。次に、最初のprintf文を再度出力し、入力を受け入れ、動作します。最初の文を出力してから入力を待つことを意味します。whileループでは、fgets()は改行を入力として受け取ります。
以下は端末出力です。
「タイプ 『1』、あなたの変更を取得するには 『2』以上の資金を追加するには別の項目、または 『3』を選択する:。 無効な入力を、もう一度試してください
タイプを 『1』を得るためにあなたの他のアイテムを選択するには '2'を、さらに資金を追加するには '3'を入力してください: "
あなたが投稿したコードでは、あなたが言及したものは印刷されません(たとえば、「変更するには「タイプ 'C」の部分)。エラーが投稿していないコードの部分にある可能性があります。 – nos
ご回答ありがとうございます。投稿時にコードを更新するのは間違いです。C、N、Aから1,2,3に変更しました。なぜなら、整数の処理が容易であると思ったからです。私はコンピュータ上で現在実行されているので、すべてが更新されています。 – Vorkos
以前のunpostedコードでは、 'stdin'に' '\ n''を残した入力関数を使用していました。 – chux