3

改行を文字列の一部として処理するプログラムを C で作成する必要があります。改行文字が検出された場合に必ずしも入力を終了しないように、改行文字を処理する方法が必要です。今まで使っていたのですが、 charfgets()になるとすぐに止まります。'\n'必ずしも改行文字で終わらないコンソールからの入力を処理するための優れた機能はありますか?

明確にするために:

この特定の演習では、改行文字が検出されたときにスペース文字に置き換えられるため、改行文字で終了しないメソッドが必要です。

4

4 に答える 4

2

私があなたの質問を正しく理解していれば、ユーザーが入力を終えるまで標準入力から読みたいと思っています(もちろん改行ではありません)。これは、入力の取得中に EOF などのフラグを設定することで実行できます。私が思いついた1つの方法はこれです:

#include <stdio.h>

int main(void)
{

  char ch;
  char str[100];
  int i = 0;

  setbuf (stdout,NULL);

  while ( (ch = getchar()) != EOF)// user can input until the EOF which he or she enters to mark the end of his/her typing or more appropriately input.
    {
      str[i] = ch;// you can store all the input character by character in a char array 
      i++;
    }
  printf ("%s",str);// then you can print it at last as a whole 
  return 0;
}

BEGINNER'S NOTE- EOF はシステムによって異なる場合があるため、チェックして、システムに適した EOF を入力してください。

于 2013-08-24T04:24:14.410 に答える
1

を必要とせずに単に情報のブロックを読んでいる場合は、あなたが求めてscanf()いるfread()ものかもしれません. ただし、コンソールでは、\n まで読むことができます。\n に注意してください。\n が自分に向いていないと判断した場合は、さらに読み進めてください。

于 2013-08-24T01:35:35.807 に答える
1

scanf指示どおりに使用すると機能します。具体的には、\n を空白として扱います。

アプリケーションのコーディング方法 (つまり、バッファの定義方法) に応じて、\nはバッファをフラッシュしてデータを にフィードするようにシステムに促しますscanf。これは、何もしなくてもデフォルトで発生するはずです。

本当の問題は、コンソールからどのようなデータまたは文字が必要かということです。scanf空白を削除し、空白、タブ、改行をプログラムに渡さない場合があります。ただし、scanfこれを行わないようにコーディングできます。

データの入力方法を定義してください。scanf のコーディング方法をご案内します。

于 2013-08-24T02:21:04.833 に答える