標準/拡張機能 | C/C++ | 依存項目 |
---|---|---|
ISO C |
両方 |
#include <stdio.h>
int fputs(const char * __restrict__string, FILE * __restrict__stream);
#define _OPEN_SYS_UNLOCKED_EXT 1
#include <stdio.h>
int fputs_unlocked(const char * __restrict__string, FILE * __restrict__stream);
string で指定されるストリングを、stream で指定される出力ストリームへ書きます。ストリングの最後に、終了 ¥0 は書きません。
テキスト・ファイルの場合、レコードが長すぎると、切り捨てが起こることも あります。切り捨て とは、超過文字は レコードがフルになったあと、行を終了する (¥n) 制御文字まで、廃棄され ます。¥n の後の文字は、次のレコードで始まります。詳しくは、「z/OS XL C/C++ プログラミング・ガイド」の『切り捨て』のトピックを参照してください。
fputs() は、type=record または type=blocked を使用してオープンしたファイルではサポートされません。
fputs() には、書き込みの直後に読み取り、または読み取りの直後に 書き込みを行うための書き込み操作と同じ制約事項があります。書き込みと後続の読み取りの間には、介入フラッシュまたは位置変更が 必要です。読み取りと後続の書き込みの間でも、EOF に達していない限り、介入フラッシュまたは位置変更が必要です。
fputs_unlocked() は、スレッド・セーフでないことを除いて、機能的に fputs() と 等価です。この関数をマルチスレッドのアプリケーション内で安全に使用できるのは、 flockfile() 関数または ftrylockfile() 関数のどちらかへの呼び出しが成功した後のように、 呼び出しスレッドが (FILE*) オブジェクトを所有している間に、この関数を呼び出す場合だけです。
正常に実行された場合、fputs() は書き込まれたバイト数を戻します。
正常に実行されなかった場合、fputs() は EOF を戻します。
⁄* CELEBF35
This example writes a string to a stream.
*⁄
#include <stdio.h>
#define NUM_ALPHA 26
int main(void)
{
FILE * stream;
int num;
⁄* Do not forget that the '¥0' char occupies one character *⁄
static char buffer[NUM_ALPHA + 1] = "abcdefghijklmnopqrstuvwxyz";
if ((stream = fopen("myfile.dat", "w")) != NULL )
{
⁄* Put buffer into file *⁄
if ( (num = fputs( buffer, stream )) != EOF )
{
⁄* Note that fputs() does not copy the ¥0 character *⁄
printf( "Total number of characters written to file = %i¥n", num );
fclose( stream );
}
else ⁄* fputs failed *⁄
printf( "fputs failed" );
}
else
printf( "Error opening myfile.dat" );
}