標準/拡張機能 | C/C++ | 依存項目 |
---|---|---|
XPG4 |
両方 |
#include <stdio.h>
int puts(const char *string);
#define _OPEN_SYS_UNLOCKED_EXT 1
#include <stdio.h>
int puts_unlocked(const char *string);
string が指すストリングを stdout が指すストリームに 書き込み、改行文字を出力に付加します。終了の NULL 文字は書き込まれません。
stdout がテキスト・ストリームを指し、出力ストリングがストリームの レコードの長さより長い場合には、ストリームはラップ されます。すなわち、レコードは出力文字で満たされ、レコードの最後の文字は改行文字に 設定され、残りの出力文字は次のレコードに書き込まれます。このようなラッピングは、残りの出力文字がレコードに合致するまで繰り返されます。改行文字が出力ストリングの最後の部分に付加されることに注意してください。出力ストリングがレコードより短い場合、レコードの残りの文字には、ブランク (stdout がテキスト・モードでオープンされる場合)、または NULL 文字 (stdout がバイナリー・モードでオープンされる場合) が挿入されます。
puts() 関数は、type=record または type=blocked を使用してオープンしたファイルで サポートされません。
puts() には、書き込みの直後の読み取り用、または読み取りの直後の書き込み用の書き込み操作と同じ制約事項があります。書き込みと後続の読み取りの間には、介入フラッシュまたは位置変更が 必要です。読み取りと後続の書き込みの間でも、EOF に達していない限り、介入フラッシュまたは位置変更が必要です。
puts_unlocked() は、スレッド・セーフでないことを除いて、機能的に puts() と 等価です。この関数をマルチスレッドのアプリケーション内で安全に使用できるのは、 flockfile() 関数または ftrylockfile() 関数のどちらかへの呼び出しが成功した後のように、 呼び出しスレッドが (FILE*) オブジェクトを所有している間に、この関数を呼び出す場合だけです。
正常に実行された場合、puts() は書き込まれたバイト数を戻します。しかし、データをラップするために使用する改行文字はカウントされません。
正常に実行されなかった場合、puts() は EOF を戻します。
システム書き込みエラーが起こると、書き込みは障害の発生時点で停止します。
切り捨てのあと、puts() は切り捨てられた文字をカウントせず、書き込まれた実際のバイト数を戻します。
⁄* cCELEBP55
This example writes "Hello World" to stdout.
*⁄
#include <stdio.h>
int main(void)
{
if ( puts("Hello World") == EOF )
printf( "Error in puts¥n" );
}
Hello World