putc()、putchar() - 文字の書き込み

標準

標準/拡張機能 C/C++ 依存項目

ISO C
POSIX.1
XPG4
XPG4.2
C99
Single UNIX Specification、バージョン 3

両方  

形式

#include <stdio.h>

int putc(int c, FILE *stream);
int putchar(int c);

機能説明

cunsigned char に変換してから、現在位置で c を出力 stream に書き込みます。 putchar() 関数は、次の関数と同じです。
putc(c, stdout);

上記の関数は、z/OS® XL C/C++ 製品 の中のマクロとしても提供されています。パフォーマンスのためには、機能形式ではなく、マクロ形式を使用されることを お勧めします。

デフォルトでは、stdio.h ヘッダー・ファイルがインクルードされている場合は、マクロが呼び出されます。したがって、ストリーム引数式を副次作用のある式にしてはなりません。

実際の関数は、次の方式のいずれかを使用してアクセスできます。
  • C のみに関しては、stdio.h を組み込まない
  • #undef を指定する (例えば #undef putc)。
  • 括弧で関数名を囲む (例えば (putchar)('a'))。

マルチスレッド・アプリケーションの場合には、フィーチャー・テスト・マクロ _OPEN_THREADS があると、これらのマクロは、スレッド・セーフではないので #undef 状況になっています。

putc() および putchar() は、type=record または type=blocked を使用してオープンしたファイルで サポートされません。

putc() および putchar() には、書き込みの直後の読み取り用、または読み取りの直後の書き込み用の書き込み操作と 同じ制約事項があります。書き込みと後続の読み取りの間には、介入フラッシュまたは位置変更が 必要です。読み取りと後続の書き込みの間でも、EOF に達していない限り、介入フラッシュまたは位置変更が必要です。

アプリケーションがマルチスレッド化されていない場合、_ALL_SOURCE_NO_THREADS フィーチャー・テスト・マクロを設定すると、この関数のインライン・バージョンを使用できるため、アプリケーションのパフォーマンス が向上します。

戻り値

正常に実行された場合、putc() および putchar() は、書き込まれた文字を戻します。

正常に実行されなかった場合、putc() および putchar() は EOF を戻します。

CELEBP54
⁄* CELEBP54

   This example writes the contents of a buffer to a data
   stream.
   The body of the "for" statement is null because the
   example carries out the writing operation in the test
   expression.

 *⁄
#include <stdio.h>
#include <string.h>
#define  LENGTH 80

int main(void)
{
   FILE *stream = stdout;
   int i, ch;
   char buffer[LENGTH + 1] = "Hello world¥n";

   ⁄* This could be replaced by using the fwrite routine *⁄
   for ( i = 0;
        (i < strlen(buffer)) && ((ch = putc(buffer[i], stream)) != EOF);
         ++i);
}
出力:
Hello world

関連情報