スペースを含む文字列値を読み取るには、C プログラミング言語の gets() または fgets() を使用できます。ここでは、gets() と fgets() の違いを見ていきます。
fgets()
fgets() は、指定されたストリームから行を読み取り、それを str が指す文字列に格納します。 (n-1) 文字が読み取られるか、改行文字が読み取られるか、またはファイルの終わりに達するかのいずれかが先に起こると、処理は停止します。
構文
char * fgets (char * str , int n , FILE * stream );>
パラメーター
- str: 読み取られた文字列がコピーされる文字の配列へのポインタ。 n: str にコピーされる最大文字数 (終端の null 文字を含む)。 *stream: 入力ストリームを識別する FILE オブジェクトへのポインタ。
注: 標準入力 標準入力から読み取る引数として使用できます。
配列cの文字列
戻り値
- fgets() 関数は、入力が保存されている文字列へのポインタを返します。
fgets()の特徴
- これは、最大長、バッファー、入力デバイス参照などのいくつかのパラメーターに従います。
- それは 安全 配列のバインドをチェックするため使用します。
- 改行文字が出現するか、文字配列の最大値に達するまで読み取りを続けます。
fgets() の例
最大文字数が 15 で、入力長が 15 より大きい場合でも、 fgets() は 15 文字だけを読み取って出力するとします。
C
// C program to illustrate fgets()> #include> #define MAX 15> int> main()> {> > // defining buffer> > char> buf[MAX];> > // using fgets to take input from stdin> > fgets> (buf, MAX, stdin);> > printf> (> 'string is: %s
'> , buf);> > return> 0;> }> |
>
>
fgets() はユーザーからの入力を読み取るため、実行時に入力を提供する必要があります。
Input: Hello and welcome to techcodeview.com Output: string is: Hello and welc>
取得()
標準入力 (stdin) から文字を読み取り、改行文字またはファイルの終わりに達するまで、文字を C 文字列として str に保存します。
- 配列のバインドをチェックしないため、使用するのは安全ではありません。
- これは、改行文字が出現しなくなるまでユーザーから文字列を読み取るために使用されます。
構文
char * gets ( char * str );>
パラメーター
- str: 読み取られた文字列が C 文字列としてコピーされるメモリ ブロック (char の配列) へのポインタ。
戻り値
- この関数は、入力が保存されている文字列へのポインタを返します。
gets() の例
15 文字の文字配列があり、入力が 15 文字を超えると仮定すると、gets() はこれらすべての文字を読み取り、変数に格納します。 gets() は入力文字の最大制限をチェックしないため、コンパイラは常にバッファ オーバーフロー エラーを返す可能性があります。
C++
// C program to illustrate> // gets()> #include> #define MAX 15> int> main()> {> > // defining buffer> > char> buf[MAX];> > printf> (> 'Enter a string: '> );> > // using gets to take string from stdin> > gets> (buf);> > printf> (> 'string is: %s
'> , buf);> > return> 0;> }> |
ベースバンドとブロードバンド
>
>
gets() はユーザーからの入力を読み取るため、実行時に入力を提供する必要があります。
Input : Hello and welcome to techcodeview.com Output : Hello and welcome to techcodeview.com>
結論
fgets() 関数と gets() 関数は両方とも、標準入力から文字列入力を読み取るために使用できます。 fgets() 関数と gets() 関数の主な違いは、fgets() 関数ではユーザーが読み取る最大文字数を指定できることと、fgets() で入力ストリームを任意のファイルに変更できることです。