scanf("%c", &ch);  は、文字以外の入力で暴走する。

ch = getchar() は、ファイル終端コードが判定できずに暴走する。