fgets
, fgetws
ストリームから文字列を取得します。
構文
char *fgets(
char *str,
int numChars,
FILE *stream
);
wchar_t *fgetws(
wchar_t *str,
int numChars,
FILE *stream
);
パラメーター
str
データの格納場所。
numChars
読み取り対象の最大文字数。
stream
FILE
構造体へのポインター。
戻り値
これらの各関数は、str
を返します。 エラーまたはファイルの末尾条件を示す NULL
が返されます。 feof
または ferror
を使用して、エラーが発生したかどうかを確認します。 str
またはstream
が null ポインターであるか、numChars
が 0 以下の場合、この関数は、Parameter 検証で説明されているように、無効なパラメーター ハンドラーを呼び出します。 実行の継続が許可された場合、 errno
が EINVAL
に設定され、関数が NULL
のセキュリティが強化されたバージョンです。
リターン コードの詳細については、「errno
、_doserrno
、_sys_errlist
、および _sys_nerr
」を参照してください。
解説
fgets
関数は、入力 stream
引数から文字列を読み取り、str
に格納します。 fgets
では、現在のストリーム位置 (最初の改行文字を含む) から、ストリームの末尾に達するか、読み取り文字数が numChars
- 1 になるかのどちらかが先に発生した時点まで文字を読み取ります。 str
に格納される結果には、null 文字が付加されます。 改行文字を読み取ると、文字列に含まれます。
fgetws
関数は、fgets
関数のワイド文字バージョンです。
fgetws
は、テキスト モードまたはバイナリ モードでstream
を開いたときに、マルチバイト文字列またはワイド文字文字列としてstr
ワイド文字引数を読み取ります。 Unicode およびマルチバイト ストリーム I/O でテキスト モードとバイナリ モードを使用する方法の詳細については、「 テキスト モードとバイナリ モード のファイル I/O およびテキスト モードとバイナリ モードでのUnicode ストリーム I/O 」を参照してください。
既定では、この関数のグローバル状態の適用対象は、アプリケーションになります。 この動作を変更するには、「CRT でのグローバル状態」を参照してください。
汎用テキスト ルーチンのマップ
TCHAR.H ルーチン |
_UNICODE と _MBCS が定義されていない |
_MBCS が定義されている |
_UNICODE が定義されている |
---|---|---|---|
_fgetts |
fgets |
fgets |
fgetws |
要件
機能 | 必須ヘッダー |
---|---|
fgets |
<stdio.h> |
fgetws |
<stdio.h> または <wchar.h> |
互換性の詳細については、「 Compatibility」を参照してください。
例
// crt_fgets.c
// This program uses fgets to display
// the first line from a file.
#include <stdio.h>
int main( void )
{
FILE *stream;
char line[100];
if( fopen_s( &stream, "crt_fgets.txt", "r" ) == 0 )
{
if( fgets( line, 100, stream ) == NULL)
printf( "fgets error\numChars" );
else
printf( "%s", line);
fclose( stream );
}
}
入力: crt_fgets.txt
Line one.
Line two.
出力
Line one.