別の問題は、あなたが読んでいることscanf("%f", &input);だけです。ユーザーが「pi」のように C の浮動小数点数として解釈できないものを入力すると、scanf()呼び出しは に何も割り当てずinput、そこから先に進みません。これは、「pi」を読み続けようとして失敗することを意味します。
while(!feof(stdin))他の投稿者が正しく推奨している変更を考えると、 「pi」と入力すると、以前の値を出力inputしてプロンプトを出力する無限ループが発生しますが、プログラムは新しい入力を処理しません。
scanf()作成した入力変数への割り当ての数を返します。割り当てが行われなかった場合、それは浮動小数点数が見つからなかったことを意味し、 のようなものでさらに入力を読み取る必要がありますchar string[100];scanf("%99s", string);。これにより、入力ストリームから次の文字列が削除されます (とにかく最大 99 文字 - 余分charは文字列の null ターミネータ用です)。
ご存知のように、これは私が を嫌うすべての理由と、代わりscanf()に を使用fgets()して を使用して解析する理由を思い出させてくれsscanf()ます。