標準/拡張機能 | C/C++ | 依存項目 |
---|---|---|
ISO C |
両方 |
#include <stdio.h>
int putc(int c, FILE *stream);
int putchar(int c);
putc(c, stdout);
上記の関数は、z/OS® XL C/C++ 製品 の中のマクロとしても提供されています。パフォーマンスのためには、機能形式ではなく、マクロ形式を使用されることを お勧めします。
デフォルトでは、stdio.h ヘッダー・ファイルがインクルードされている場合は、マクロが呼び出されます。したがって、ストリーム引数式を副次作用のある式にしてはなりません。
マルチスレッド・アプリケーションの場合には、フィーチャー・テスト・マクロ _OPEN_THREADS があると、これらのマクロは、スレッド・セーフではないので #undef 状況になっています。
putc() および putchar() は、type=record または type=blocked を使用してオープンしたファイルで サポートされません。
putc() および putchar() には、書き込みの直後の読み取り用、または読み取りの直後の書き込み用の書き込み操作と 同じ制約事項があります。書き込みと後続の読み取りの間には、介入フラッシュまたは位置変更が 必要です。読み取りと後続の書き込みの間でも、EOF に達していない限り、介入フラッシュまたは位置変更が必要です。
アプリケーションがマルチスレッド化されていない場合、_ALL_SOURCE_NO_THREADS フィーチャー・テスト・マクロを設定すると、この関数のインライン・バージョンを使用できるため、アプリケーションのパフォーマンス が向上します。
正常に実行された場合、putc() および putchar() は、書き込まれた文字を戻します。
正常に実行されなかった場合、putc() および putchar() は EOF を戻します。
⁄* 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