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

putc(3S)

HP-UX 11i Version 2: September 2004
≫ 

テクニカル ドキュメント

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

 ≫ 目次

 ≫ 索引

名称

putc(), putchar(), fputc(), putw() ― ストリーム上に文字またはワードを出力

構文

#include <stdio.h>

int putc(int c, FILE *stream);

int putchar(int c);

int fputc(int c, FILE *stream);

int putw(int w, FILE *stream);

int putc_unlocked(int c, FILE *stream);

int putchar_unlocked(int c);

廃止インタフェース

int putw_unlocked(int w, FILE *stream);

説明

putc() 

ファイルポインターが定義されていれば、出力 stream 上のポインターが指している位置に、 文字 c を書き込みます。 putchar(c) は、 putc(c, stdout) として定義されます。 putc() および putchar() は、どちらもマクロおよび関数として定義されます。

fputc() 

putc() と同じです。ただし、マクロではなく関数なので、引き数として使うことができます。 fputc() は、 putc() よりも実行速度が遅くなりますが、実行のたびに使われるスペースが小さく、名前を引き数として関数に引き渡すことができます。

putw() 

w というワード (すなわち、C では int 型) を、出力 stream (ファイルポインターが定義されていれば、そのポインターが指している位置) に出力します。 ワードの大きさは整数の大きさであり、使用機種によって変わります。 putw() は、ファイルに対し特別な境界を仮定することも、作成することもありません。

標準エラーストリーム stderr を除く出力ストリームは、デフォルトで、ファイルに出力される場合にはバッファー化され、ターミナルに出力される場合にはラインバッファー化されます。 標準エラー出力ストリーム stderr は、デフォルトでバッファー化されませんが、 freopen() fopen(3S) 参照) を使用すると、バッファー化もしくはラインバッファー化されます。 setbuf() もしくは setvbuf() setbuf(3S) 参照) を使用すると、ストリームのバッファリング方針を変更できます。 putc_unlocked()putchar_unlocked() は、ストリームに文字を出力します。

廃止インタフェース

putw_unlocked() は、ストリームに文字またはワードを出力します。

アプリケーション使用法

putc(), fputc(), putchar(), または putw() がストリームに適用された後は、ストリームはバイト指向になります (orientation(5) を参照)。

戻り値

正常終了すると、 putc(), putc_unlocked(), fputc(), putchar(), putchar_unlocked() は、それぞれの書き出した値を返します。 失敗すると、定数 EOF を返し、ストリームにエラーを示し、エラーを示す値を errno に設定します。

正常終了すると、 putw()putw_unlocked() は 0 を返します。 失敗すると、0 でない値を返し、ストリームに対してエラーを示し、エラーを示す値が errno に設定されます。

エラー

putc(), putc_unlocked(), putchar(), putchar_unlocked(), fputc(), putw(), putw_unlocked() は、 stream がバッファー化されていないか、 stream バッファーが掃き出される必要がある場合に失敗し、その下の write() コマンドを実行します。

[EAGAIN] 

stream の下のファイル記述子に対して O_NONBLOCK フラグが立てられ、プロセスは write 操作の間遅延されます。

[EBADF] 

stream の下のファイル記述子が、書き込み用に開かれた、有効なファイル記述子ではないことを示します。

[EFBIG] 

書き込もうとしたファイルが、プロセスのファイルサイズ上限、もしくは最大ファイルサイズを超えていることを示します ulimit(2) 参照)。

[EINTR] 

write() システムコールの最中にシグナルが発生したことを示します。

[EIO] 

物理的な I/O エラーが発生している場合か、またはプロセスがバックグラウンド プロセスグループの中にある状態で、制御ターミナルへ書き出そうとしていることを示します。 TOSTOP が設定されますが、プロセスは SIGTTOU シグナルを無視も、妨害もしていません。そのプロセスのプロセスグループは、親なしにされます。

[ENOSPC] 

ファイルを格納しているデバイスに空きスペースがないことを示します。

[EPIPE] 

読み込み用に開かれていないパイプもしくは FIFO に対して、書き込もうとしていることを示します。 SIGPIPE シグナルがプロセスに送られます。

下の write() 関数によって、その他の errno 値が設定されることもあります write(2) 参照)。

警告

putc() および putchar() ルーチンは、いずれもライブラリ関数とマクロの両方として実現されたものです。 マクロ版は、デフォルトで使用されており、 <stdio.h> で定義されています。 ライブラリ関数を取得するには、 #undef を使ってマクロの定義を取り除きます。あるいは、 ANSI-C モードでコンパイルを行う場合は、関数名をかっこで囲むか、関数アドレスを使ってください。 以下の例で、これらの方法を示します。

#include    <stdio.h> 
#undef    putc 
   ...
main()
{
    int (*put_char()) ();
     ...
    return_val=putc(c,fd);
     ...
    return_val=(putc)(c,fd1);
     ...
    put_char = putchar;
};

標準 I/O ルーチンを使っているのに、標準入力からの読み込みには read() を直接使っているようなプログラムでは、ラインバッファリングが混乱を招いたり、誤動作の原因になることがあります。 行の一部を出力ターミナルに出力した後で大量の計算を行う場合、計算を始める前に標準出力に対して fflush() fclose(3S) 参照) 処理を行う必要があります。

putc() のマクロ版は、副作用によって、引き数 stream を正しく処理できません。 特に以下のコマンドは、期待したとおりには実行されないことがあります。

putc(c, *f++); 

関数版の putc()fputc() を使ってください。

機種によってワードの長さやバイト順序に違いがあるため、 putw() を使って作成したファイルは、機種に依存したものとなります。したがって、違うプロセッサ上で getw() を使っても、ファイルが読めないことがあります。

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

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

_REENTRANT が定義されている場合、 putc() および putchar() に対してライブラリ関数のロック付きの版が、デフォルトで使われます。

標準準拠

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

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

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

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

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