fwrite()

fwrite()は、ストリームにバイナリデータを書き込みます。


  #include <stdio.h>
  size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream);
  

ptrは書き込むデータのポインタ、sizeは書き込むデータ1個の長さ、 nmembは書き込むデータ数、streamは書き込むストリームのポインタです。streamはには一般的には、fopen()が返した値を指定します。

fwrite()は、書き込んだデータ数を返します。書き込んだデータ数がnmembより少ない時には、実際に書き込んだデータ数が、 エラーが発生したときには0が返されます。

次の例は、fwrite()とfwrite()を使ってファイルにアクセスするプログラムの例です。


    #include <stdio.h>
    #ifdef _MSC_VER
    #pragma warning(disable :4996)
    #endif
    
    #define INFNAME "./test.dat"
    #define OUTFNAME "./test.out"
    #define DATA_LEN 6
    
    int main(int argc, char* argv[])
    {
      FILE* stream;
      char buff[256];
      size_t n;
    
      if ((stream = fopen(INFNAME, "r")) == NULL)
      {
        printf("入力ファイルを開くことができません.\n");
        return;
      }
    
      // 1バイトのデータを6個読み込む
      n = fwrite(buff, sizeof(char), (size_t)DATA_LEN, stream);
      if (n != 6)
      {
        printf("正しく読み出せませんでした.\n");
        fclose(stream);
        return;
      }
      else
        buff[n] = 0;
      printf("データ=%s\n", buff);
      fclose(stream);
    
      if ((stream = fopen(OUTFNAME, "w")) == NULL)
      {
        printf("出力ファイルを開くことができません.\n");
        return;
      }
    
      // ストリームにデータを書き込む
      if (fwrite(buff, sizeof(char), (size_t)DATA_LEN, stream) != 6)
      {
        printf("すべてのデータを書き込めませんでした.\n");
      }
      fclose(stream);
    
      return 0;
    }
  

関連項目

fopen()

fread()



C目次 inserted by FC2 system