fwriteとは? わかりやすく解説

fwrite

(PHP 4, PHP 5)
fwrite — バイナリ・モードによるファイル書き込み

説明

int fwrite ( resource handle, string string [, int length] )
fwrite()stringの内容を handleが指しているファイル・ストリームに書き込み ます。lengthパラメータが与えられている場合、 lengthバイト数分の書き込みが完了したか、 stringが終わりに達したかのいずれか早い方の 事象により書き込みは中止されます。
fwrite()は書き込んだバイト数、またはエラー時に FALSE を返します。
length パラメータが指定されている場合、 magic_quotes_runtime 構成オプションは無視され、stringからの スラッシュ文字の取り除きは行われないことに注意してください。
注意: (Windowsのように)バイナリとテキストファイルの形式が異なるシステ ムにおいては、ファイルをオープンする際に fopen()の mode パラメータに 'b' を指定する必 要があります。
例 614. fwrite() の簡単な例
<?php
$filename = 'test.txt';
$somecontent = "Add this to the file\n";

// ファイルが存在しかつ書き込み可能かどうか確認します
if (is_writable($filename)) {

   // この例では$filenameを追加モードでオープンします。
   // ファイルポインタはファイルの終端になりますので
   // そこがfwrite()で$somecontentが追加される位置になります。
   if (!$handle = fopen($filename, 'a')) {
         echo "Cannot open file ($filename)";
         exit;
   }

   // オープンしたファイルに$somecontentを書き込みます
   if (fwrite($handle, $somecontent) === FALSE) {
       echo "Cannot write to file ($filename)";
       exit;
   }

   echo "Success, wrote ($somecontent) to file ($filename)";

   fclose($handle);

} else {
   echo "The file $filename is not writable";
}
?>


fread(), fopen(), fsockopen(), popen(), file_put_contents() も参照ください。

fwrite

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/12/05 16:38 UTC 版)

ナビゲーションに移動 検索に移動

fwriteは、C言語の標準入出力ヘッダー <stdio.h> で宣言されている関数である。 主に、バイナリ形式のファイル出力に使われる。

形式

ISO/IEC 9899:1999 では、以下のように定義されている[1]

概要
#include <stdio.h>
size_t fwrite(const void * restrict ptr, size_t size, size_t nmemb, FILE * restrict stream);
説明
fwrite関数は、ptrが指す配列から、sizeで指定された大きさを持つ要素を最大nmemb個まで、streamが指すストリームに書き込む。各オブジェクトに対して、オブジェクトの上に正確に重なっているunsigned charの配列から値を(順に)取得しながら、fputc関数がsize回だけ呼び出される。ストリームのファイル位置指示子[注釈 1](定義されている場合)は、正常に書き込まれた文字数だけ進む。エラーが発生した場合、ストリームのファイル位置指示子の結果は不定である。
返却値
fwrite関数は、書き込みに成功した要素の数を返すが、書き込みエラーが発生した場合のみ、nmembよりも小さくなる。sizeまたはnmembがゼロの場合、fwriteはゼロを返し、ストリームの状態は変更されない。

ISO/IEC 9899:2018 でも同様である[2]

テキストモード

streamがテキストモードで開かれていた場合、改行コードLFは書き込みの際にCR+LFで置換される処理系もある[3]。詳細は各処理系のリファレンスを参照のこと。

コード例

ユーザーの入力を受け取り、バイナリモードで sample.dat に書き込んだ後、読み込んで表示する。

#include <stdio.h>
#include <string.h>

static void printDoubleAsBigEndianHexBytes(double x) {
    unsigned char buf[sizeof(double)];
    size_t i;
    memcpy(buf, &x, sizeof(double));
    printf("0x");
    for (i = 0; i < sizeof(double); ++i) {
        printf("%02x", buf[i]);
    }
    puts("");
}

int main(void) {
    const char* const fileName = "sample.dat";
    FILE* fp;
    double v;
    size_t len;

    puts("Input a real number:");
    if (scanf("%lf", &v) != 1) {
        fprintf(stderr, "Failed to read a number from stdin.\n");
        return -1;
    }
    printDoubleAsBigEndianHexBytes(v);

    /* ファイルへの書き込み */
    fp = fopen(fileName, "wb");
    if (fp == NULL) {
        fprintf(stderr, "Cannot open \"%s\" in write mode.\n", fileName);
        return -1;
    }
    len = fwrite(&v, sizeof(double), 1, fp); 
    if (len != 1) {
        fclose(fp);
        fprintf(stderr, "Failed to write to \"%s\".\n", fileName);
        return -1;
    }
    fclose(fp);

    /* ファイルからの読み込み */
    fp = fopen(fileName, "rb");
    if (fp == NULL) {
        fprintf(stderr, "Cannot open \"%s\" in read mode.\n", fileName);
        return -1;
    }
    len = fread(&v, sizeof(double), 1, fp);
    if (len != 1) {
        fclose(fp);
        fprintf(stderr, "Failed to read from \"%s\".\n", fileName);
        return -1;
    }
    fclose(fp);
    printf("Read value: %f\n", v);
    printDoubleAsBigEndianHexBytes(v);

    return 0;
}

なお、標準Cの言語仕様では、sizeof(double)の結果は規定されていない。doubleの値がIEEE 754準拠の倍精度浮動小数点数表現であることも規定されておらず、エンディアンも規定されていない。そのため、上記のコードによって生成されたバイナリファイルが、異なるプラットフォームでも同じように読み込めるとは限らない。

脚注

注釈

  1. ^ ISO/IEC 9899:1999 の position indicator は、JIS X 3010:2003 では「位置表示子」と訳されている。

出典

関連項目

外部リンク




固有名詞の分類


英和和英テキスト翻訳

英語⇒日本語日本語⇒英語

辞書ショートカット

すべての辞書の索引

「fwrite」の関連用語

fwriteのお隣キーワード

   

英語⇒日本語
日本語⇒英語
   



fwriteのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
PHP Documentation GroupPHP Documentation Group
Copyright © 1997 - 2026 by the PHP Documentation Group.
ウィキペディアウィキペディア
All text is available under the terms of the GNU Free Documentation License.
この記事は、ウィキペディアのfwrite (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。 Weblio辞書に掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。

©2026 GRAS Group, Inc.RSS