現在、大学の課題でc言語を用いた簡単なゲームを作成しています。最終的には同じ講義を受けている人同士で互いのゲームをプレイすることになっています。
私のゲームでは文章の出力のため、一定数のprintf()だけの関数を作り、その関数をmainで呼び出しています。しかし、そのままだときりの良いところで止めることができず、開業が多い文章を表示すると見づらくなってしまいます。そこでノベルゲームのように[文章を表示→エンターを押す→続きの文章を表示]といった一連の流れの処理を行いたいのです。
getchar()を使えば入力待ちを利用してエンターを押すまで文章の表示を待機させることができるのは調べてわかり、一連の流れのように実行することができました。しかし、エンターを押して進める際に何か文字が入っていると同じ関数内の2回目以降のgetchar()で入力待ちが発生せず、そのまま表示が流れてしまいました。エンターの際に文字を入力しなければよいだけなのですが、ほかの人にもプレイしてもらう関係上、可能な限りこういった想定外の動作は減らしたいのです。どのようにプログラムを組めばよいでしょうか?
[1.1] 自分が今行いたい事は何か
getchar()を使い、関数内のprintfで出力される文章を
[文章を一定行表示→エンターを押す→続きの文章を表示]
を一連の流れとして複数回行う。
[1.2] どのように取り組んだか(プログラムコードがある場合記載)
#include <stdio.h>
void print();
char c;
int main() {
print();
printf("END\n");
return 0;
}
void print() {
printf("1行目\n");
c = getchar();
printf("2行目\n");
c = getchar();
printf("3行目\n");
c = getchar();
printf("4行目\n");
c = getchar();
}
エンター入力の際、誤って文字が入っているとそれ以降のgetchar()で入力待ちが発生しない。
[1.4] 今何がわからないのか、知りたいのか
誤って文字が入っていても以降のgetchar()で文章の表示を止める。
[2] 環境
[2.1] OS : wsl
[2.2] コンパイラ名 : gcc