改行を文字列の一部として処理するプログラムを C で作成する必要があります。改行文字が検出された場合に必ずしも入力を終了しないように、改行文字を処理する方法が必要です。今まで使っていたのですが、 charfgets()
になるとすぐに止まります。'\n'
必ずしも改行文字で終わらないコンソールからの入力を処理するための優れた機能はありますか?
明確にするために:
この特定の演習では、改行文字が検出されたときにスペース文字に置き換えられるため、改行文字で終了しないメソッドが必要です。
改行を文字列の一部として処理するプログラムを C で作成する必要があります。改行文字が検出された場合に必ずしも入力を終了しないように、改行文字を処理する方法が必要です。今まで使っていたのですが、 charfgets()
になるとすぐに止まります。'\n'
必ずしも改行文字で終わらないコンソールからの入力を処理するための優れた機能はありますか?
明確にするために:
この特定の演習では、改行文字が検出されたときにスペース文字に置き換えられるため、改行文字で終了しないメソッドが必要です。
私があなたの質問を正しく理解していれば、ユーザーが入力を終えるまで標準入力から読みたいと思っています(もちろん改行ではありません)。これは、入力の取得中に 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 を入力してください。
を必要とせずに単に情報のブロックを読んでいる場合は、あなたが求めてscanf()
いるfread()
ものかもしれません. ただし、コンソールでは、\n まで読むことができます。\n に注意してください。\n が自分に向いていないと判断した場合は、さらに読み進めてください。
scanf
指示どおりに使用すると機能します。具体的には、\n を空白として扱います。
アプリケーションのコーディング方法 (つまり、バッファの定義方法) に応じて、\n
はバッファをフラッシュしてデータを にフィードするようにシステムに促しますscanf
。これは、何もしなくてもデフォルトで発生するはずです。
本当の問題は、コンソールからどのようなデータまたは文字が必要かということです。scanf
空白を削除し、空白、タブ、改行をプログラムに渡さない場合があります。ただし、scanf
これを行わないようにコーディングできます。
データの入力方法を定義してください。scanf のコーディング方法をご案内します。