• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:C言語の標準入力で改行しない方法)

C言語の標準入力で改行しない方法

このQ&Aのポイント
  • C言語の標準入力で改行しない方法について紹介します。改行せずに入力を受け取り、次の表示を行いたい場合、以下のような方法を試してみてください。
  • 具体的には、fgets関数を使って入力を受け取った後、改行文字を削除することで改行を回避できます。
  • ただし、実行環境によっては改行が発生する場合もありますので、環境に依存しない方法を求める場合は、別の方法を検討する必要があります。

質問者が選んだベストアンサー

  • ベストアンサー
  • Wr5
  • ベストアンサー率53% (2173/4061)
回答No.1

>原因がわかりません… >fgets(str, sizeof(str), stdin); の時点で、改行文字まで込みでエコーバックされているようですから無理じゃないですかね? # つまりターミナル上ではfgets()から戻ってきた時点で改行処理が終わっている。 >使用している環境は Linux Ubuntu 10.10 で gcc でコンパイルしています。 http://okwave.jp/qa/q608841.html ioctl()の利用でなんとかなるかもしれません。 フラグの設定方法次第かも知れませんけど。 # 改行だけエコーバックさせない…ってところでしょうか。 # ECHONLが関係しますかねぇ…。 >改行しない方法を説明しているサイトのサンプルをコピペして それは「fgets()で取得した文字列から改行コードを取り除く」ではありませんか? まぁ、fgets()で渡したバッファよりも長い文字列を入力した場合に誤動作すると思われますが。 # 改行コードかどうか判定してから削除しないと…ね。

U-NAGI
質問者

お礼

回答ありがとうございました^^ とても複雑そうですね… とりあえず考えてみます。