fgets、fgetws
更新 : 2007 年 11 月
ストリームから文字列を取得します。
char *fgets(
char *str,
int n,
FILE *stream
);
wchar_t *fgetws(
wchar_t *str,
int n,
FILE *stream
);
パラメータ
str
データの格納場所。n
読み取る最大文字数。stream
FILE 構造体へのポインタ。
戻り値
これらの各関数は、str を返します。エラーが発生するか、またはファイルの終端に達すると、NULL を返します。エラーが発生したかどうかを確認するには、feof または ferror を使用します。str または stream が null ポインタの場合、または n が 0 以下の場合、この関数は、「パラメータの検証」に説明されているように、無効なパラメータ ハンドラを呼び出します。実行の継続が許可された場合、errno が EINVAL に設定され、関数から NULL が返されます。
エラー コードの詳細については、「_doserrno、errno、_sys_errlist、および _sys_nerr」を参照してください。
解説
fgets 関数は、引数 stream として指定された入力ストリームから文字列を読み出し、str に格納します。fgets は、現在のストリーム位置から読み出しを開始し、最初の改行文字、ストリームの終端、または n – 1 文字目のいずれかを最初に検出するまで読み出します。str に格納された文字列の末尾には、NULL 文字が追加されます。改行文字は、読み取られると文字列として格納されます。
fgetws は、fgets のワイド文字バージョンです。
fgetws は、ワイド文字引数 str の読み出しを行い、stream がテキスト モードで開かれた場合はマルチバイト文字列として、バイナリ モードで開かれた場合はワイド文字列として読み出します。Unicode およびマルチバイトのストリーム入出力におけるテキスト モードおよびバイナリ モードの使い方の詳細については、「テキスト モードとバイナリ モードのファイル入出力」および「テキスト モードとバイナリ モードの Unicode ストリーム入出力」を参照してください。
汎用テキスト ルーチンのマップ
TCHAR.H のルーチン |
_UNICODE および _MBCS が未定義の場合 |
_MBCS が定義されている場合 |
_UNICODE が定義されている場合 |
---|---|---|---|
_fgetts |
fgets |
fgets |
fgetws |
必要条件
関数 |
必須ヘッダー |
---|---|
fgets |
<stdio.h> |
fgetws |
<stdio.h> または <wchar.h> |
互換性の詳細については、「C ランタイム ライブラリ」の「互換性」を参照してください。
使用例
// crt_fgets.c
// This program uses fgets to display
// a line from a file on the screen.
//
#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\n" );
else
printf( "%s", line);
fclose( stream );
}
}
入力 : crt_fgets.txt
Line one.
Line two.
出力
Line one.