fgetc、fgetwcfgetc, fgetwc

ストリームから単一の文字を読み取ります。Read a character from a stream.


int fgetc(
   FILE *stream
wint_t fgetwc(
   FILE *stream


FILE 構造体へのポインター。Pointer to FILE structure.

戻り値Return Value

fgetcは、 intとして読み取られた文字を返すか、またはEOFを返してエラーまたはファイルの末尾を示します。fgetc returns the character read as an int or returns EOF to indicate an error or end of file. fgetwcは、読み取った文字に対応するワイド文字をwint_tとして返します。または、ファイルのエラーまたは終了を示すWEOFを返します。fgetwc returns, as a wint_t, the wide character that corresponds to the character read or returns WEOF to indicate an error or end of file. どちらの関数でも、 feofまたはferrorを使用して、エラーとファイルの終端の条件を区別します。For both functions, use feof or ferror to distinguish between an error and an end-of-file condition. 読み取りエラーが発生すると、ストリームのエラー インジケーターが設定されます。If a read error occurs, the error indicator for the stream is set. StreamNULLの場合、 fgetcおよびfgetwcは、「パラメーターの検証」で説明されているように、無効なパラメーターハンドラーを呼び出します。If stream is NULL, fgetc and fgetwc invoke the invalid parameter handler, as described in Parameter Validation. 実行の継続が許可された場合、これらの関数はerrnoEINVALに設定し、 EOFを返します。If execution is allowed to continue, these functions set errno to EINVAL and return EOF.


これらの各関数は、ストリームに関連付けられているファイルの現在位置から1文字を読み取ります。Each of these functions reads a single character from the current position of the file associated with stream. 関数は、次の文字 (定義されている場合) を指すように、関連ファイルのポインターをインクリメントします。The function then increments the associated file pointer (if defined) to point to the next character. ストリームがファイルの末尾にある場合、ストリームのファイルの末尾を示すインジケーターが設定されます。If the stream is at end of file, the end-of-file indicator for the stream is set.

fgetcgetcに相当しますが、関数およびマクロとしてではなく、関数としてのみ実装されます。fgetc is equivalent to getc, but is implemented only as a function, rather than as a function and a macro.

fgetwcは、 fgetcのワイド文字バージョンです。ストリームがテキストモードとバイナリモードのどちらで開かれているかに応じて、 cはマルチバイト文字またはワイド文字として読み取られます。fgetwc is the wide-character version of fgetc; it reads c as a multibyte character or a wide character according to whether stream is opened in text mode or binary mode.

_nolock サフィックスが付いているバージョンは同じものですが、他のスレッドによる干渉から保護されない点が異なります。The versions with the _nolock suffix are identical except that they are not protected from interference by other threads.

テキスト モードとバイナリ モードのワイド文字とマルチバイト文字の処理の詳細については、「Unicode Stream I/O in Text and Binary Modes」 (テキスト モードとバイナリ モードの Unicode ストリーム入出力) を参照してください。For more information about processing wide characters and multibyte characters in text and binary modes, see Unicode Stream I/O in Text and Binary Modes.

汎用テキスト ルーチンのマップGeneric-Text Routine Mappings

TCHAR.H のルーチンTCHAR.H routine _UNICODE および _MBCS が未定義の場合_UNICODE & _MBCS not defined _MBCS が定義されている場合_MBCS defined _UNICODE が定義されている場合_UNICODE defined
_fgettc_fgettc fgetcfgetc fgetcfgetc fgetwcfgetwc


関数Function 必須ヘッダーRequired header
fgetcfgetc <stdio.h><stdio.h>
fgetwcfgetwc <stdio.h> または <wchar.h><stdio.h> or <wchar.h>

互換性の詳細については、「 互換性」を参照してください。For additional compatibility information, see Compatibility.


// crt_fgetc.c
// This program uses getc to read the first
// 80 input characters (or until the end of input)
// and place them into a string named buffer.

#include <stdio.h>
#include <stdlib.h>

int main( void )
   FILE *stream;
   char buffer[81];
   int  i, ch;

   // Open file to read line from:
   fopen_s( &stream, "crt_fgetc.txt", "r" );
   if( stream == NULL )
      exit( 0 );

   // Read in first 80 characters and place them in "buffer":
   ch = fgetc( stream );
   for( i=0; (i < 80 ) && ( feof( stream ) == 0 ); i++ )
      buffer[i] = (char)ch;
      ch = fgetc( stream );

   // Add null to end string
   buffer[i] = '\0';
   printf( "%s\n", buffer );
   fclose( stream );

入力: crt_fgetc.txtInput: crt_fgetc.txt

Line one.
Line two.


Line one.
Line two.

関連項目See also

ストリーム入出力Stream I/O
fputc、fputwcfputc, fputwc
getc、getwcgetc, getwc