本文に進む 日本−日本語
日本HPホーム 製品とサービス お客様サポート/ ダウンロード ソリューション ご購入の方法
≫ お問い合わせ
詳細検索オプション
日本HPホーム
HP-UX リファレンス: セクション 3 : ライブラリ (A~M) > g

getc(3S)

HP-UX 11i Version 2: September 2004
≫ 

テクニカル ドキュメント

PDF版
フィードバック
ここから本文が始まります

 ≫ 目次

 ≫ 索引

名称

getc(), getc_unlocked(), getchar(), getchar_unlocked(), fgetc(), getw() ― ストリームファイルからの文字あるいはワードの取得

構文

#include <stdio.h>

int getc(FILE *stream);

int getc_unlocked(FILE *stream);

int getchar(void);

int getchar_unlocked(void);

int fgetc(FILE *stream);

int getw(FILE *stream);

廃止インタフェース

int getw_unlocked(FILE *stream);

説明

getc() 

stream で指定された入力から、次の文字 (すなわちバイト) を符号なし文字から整数に変換して返します。 stream のファイルポインターがもしあれば、それを 1 文字分先に進めます。 getchar()getc(stdin) と定義されています。 getc() および getchar() は、マクロと関数の両方で定義されています。

fgetc() 

getc() と同じですが、マクロではなく関数です。 fgetc()getc() より低速ですが、スペースをとらず、その名前を関数の引き数として渡すことができます。

getw() 

stream で指定された入力から次のワード (すなわち C では int) を返します。 getw() は、ファイルポインターがもしあれば、それを 1 ワード先があればそこに進めます。 ワードの大きさと整数の大きさは、個々の機種によって異なります。 getw() では、ファイルが特別に境界付けされていないものとしています。

getc_unlocked() および getchar_unlocked()stream の内部ロックをマルチスレッドアプリケーションに対して実行しないこと以外は、それぞれ getc(), および getchar() と同じです。

廃止インタフェース

getw_unlocked() はストリームファイルから文字またはワードを取得します。

アプリケーション使用法

getc_unlocked() および getchar_unlocked() インタフェースは、 flockfile() を使用して stream に対する相互排他的ロックをすでに取得しているマルチスレッドアプリケーションで使用できます flockfile(3S) 参照)。

getc(), getc_unlocked(), getchar(), getchar_unlocked(), fgetc(), または getw() がストリームに適用された後は、ストリームはバイト指向になります (orientation(5) を参照)。

戻り値

正常終了すると、 getc(), getc_unlocked(), getchar(), getchar_unlocked() および fgetc() は、 stream で指定された入力ストリーム getchar() および getchar_unlocked() の場合は ストリームがファイルの終わりにくると、ストリームのエンドオブファイル指標をセットし、 EOF を返します。 読み出しエラーが起きた場合、ストリームのエラー指標を設定し、エラーを示す値を errno に設定し、 EOF を返します。

getw() および getw_unlocked() は正常終了すると stream で指定された入力ストリームから次のワードを返します。ストリームがファイルの終わりにきたら、エンドオブファイル指標を設定し、 getw() および getw_unlocked() は EOF を返します。 読み出しエラーが起きた場合、ストリームのエラー指標を設定し、 getw() および getw_unlocked() はエラーを示す値を errno に設定し、 EOF を返します。

ferror() および feof() を使用して、エラー状態とエンドオブファイル状態を区別できます。

エラー

getc(), getc_unlocked(), getchar(), getchar_unlocked(), getw(), getw_unlocked() および fgetc() は、 stream のバッファーに読み出すべきデータがあるとき、あるいは以下のような場合に失敗します。

[EAGAIN] 

stream のファイル記述子に O_NONBLOCK フラグが設定されていて、プロセスが読み出し動作に間に合わない場合

[EBADF] 

stream のファイル記述子が読み出しオープンされたファイル記述子として無効である。

[EINTR] 

読み出し動作がシグナルを受け取って中断し、データが転送されなかったか、ファイルの一部だけが転送された場合

[EIO] 

物理的な I/O エラーが発生している場合か、プロセスがバックグランドプロセスで、制御ターミナルから読み出そうとして SIGTTIN シグナルを無視ブロックしている場合か、プロセスのプロセスグループが親なしの場合

中で呼ばれる read() 関数が、これ以外の値を errno に設定することがあります read(2) 参照)。

警告

getc() および getchar() は、ライブラリ関数マクロ両方で実現されています。マクロ版はデフォルトで使用され、 <stdio.h> で定義されています。 ライブラリ関数を得るには #undef を使ってマクロ定義を削除するか、 ANSI-C モードでコンパイルするか、関数の名前をカッコで囲むか、関数のアドレスを使用します。 方法は以下のとおりです。

#include <stdio.h> 
#undef getc 
    ...
main()
{
    int (*get_char()) ();
    ...
    return_val=getc(c,fd);
    ...
    return_val=(getc)(c,fd1);
    ...
    get_char = getchar;
};

getc(), getc_unlocked(), getchar(), getchar_unlocked() あるいは fgetc() の返す整数値を文字変数に格納して、整数定数 EOF と比較をした場合、文字の整数への符号拡張は機種に依存しているので、この比較は成功しないことがあります。

マクロ版の getc() は、副作用のある stream 引き数は正しく扱うことができません。 とくに getc(*f++) の動作は不安定です。 関数版の getc() あるいは fgetc() を代わりに使う必要があります。

ワード長およびバイト順が異なることがあるので、 putw() を使用して書き出したファイルは機種に依存します。 違ったプロセッサ上では getw() を使用しても読み出せない場合があります。

リエントラントインタフェース

<stdio.h> をインクルードする前に _REENTRANT が定義されている場合、 getc() および getchar() のライブラリ関数のロック付きの版が、デフォルトで使われます。

getw_unlocked() インタフェースは廃止され、現在では既存の DCE アプリケーションとの互換性を保つためにだけサポートされています。新しいマルチスレッドアプリケーションでは、 getw() を使用してください。

参照

fclose(3S), ferror(3S), flockfile(3S), fopen(3S), fread(3S), gets(3S), putc(3S), read(2), scanf(3S), orientation(5), thread_safety(5)

標準準拠

getc(): AES, SVID2, SVID3, XPG2, XPG3, XPG4, FIPS 151-2, POSIX.1, ANSI C

getc_unlocked(): POSIX.1C

fgetc(): AES, SVID2, SVID3, XPG2, XPG3, XPG4, XPG4.2, FIPS 151-2, POSIX.1, ANSI C

getchar(): AES, SVID2, SVID3, XPG2, XPG3, XPG4, FIPS 151-2, POSIX.1, ANSI C

getchar_unlocked(): POSIX.1C

getw(): AES, SVID2, SVID3, XPG2, XPG3, XPG4

印刷用画面へ
プライバシー 本サイト利用時の合意事項
© 1983-2004 Hewlett-Packard Development Company, L.P.