C言語 テキストファイルの書き込み - stdio.h - [ fputc, putc, fputs ]

2008.09.22 Monday | by LRESULT


キストファイルの書き込みです。

ファイル読み込みと同じように、fopen()関数で取得したFILE型ポインタを使用します。
基本的に、fgetc()やfgets()の反対語の、fputc()、putc()、fputs()というように、
get」が「put」に置き換わります。

ファイル書き込みする際は、fopen()のモードを、"w""a"など、
書き込みモードで開くことを忘れないようにして下さい。


fputc
書式 int fputc( int c, FILE *fp )
機能 1文字ずつファイルへ書き込み
引数 int c : 出力する1文字
FILE *fp : ファイル(ストリーム)ポインタ
戻り値 成功すると、出力した文字を返し、
失敗すると、EOF(-1)を返します。



putc
書式 int putc( int c, FILE *fp )
機能 fputc()と同じ機能の関数で、マクロで定義されている事のみ異なります
1文字ずつファイルへ書き込み
引数 int c : 出力する1文字
FILE *fp : ファイル(ストリーム)ポインタ
戻り値 成功すると、出力した文字を返し、
失敗すると、EOF(-1)を返します。



fputs
書式 int fputs( const char *str, FILE *fp )
機能 文字列を、まとめてファイル書き込み
引数 const char *str : 出力する文字列
FILE *fp : ファイル(ストリーム)ポインタ
戻り値 成功すると、0以上の値を返し、
失敗すると、EOF(-1)を返します。





サンプルコード1
テキストファイル「test.txt」開いた後、文字列を書き込みます。
テキストの内容は、

Hello World
The C Programming Language
Test Test


です。
まずは、fputc()で1文字ずつ書き込みます。
#include <stdio.h>

int main(void)
{
  FILE *fp;
  char *fname = "test.txt";
  char *str = "Hello World¥nThe C Programming Language¥nTest Test";
  int i;

  fp = fopen( fname, "w" );
  if( fp == NULL ){
    printf( "%sファイルが開けません¥n", fname );
    return -1;
  }

  for( i=0; i<48; i++ ){
    fputc( str[i], fp );
  }

  fclose( fp );

  printf( "%sファイル書き込みが終わりました¥n", fname );
  return 0;
}



結果
test.txtファイル書き込みが終わりました
fopen()のモードを "w" としているので、新規でファイルを作成してから
内容を書き込んでいます。

文字の総数は、改行文字を含んだ48文字なので文字の数だけループします。
成功したら、ソースファイルのあるフォルダに「test.txt」という名前のファイルが作成されています。



サンプルコード2
次に、fputs()を利用したファイル書き込みをしてみます。
書き込む内容は、上のサンプルと同じです。
#include <stdio.h>

int main(void)
{
  FILE *fp;
  char *fname = "test.txt";
  char *str = "Hello World¥nThe C Programming Language¥nTest Test";
  int i;

  fp = fopen( fname, "w" );
  if( fp == NULL ){
    printf( "%sファイルが開けません¥n", fname );
    return -1;
  }

  fputs( str, fp );

  fclose( fp );

  printf( "%sファイル書き込みが終わりました¥n", fname );
  return 0;
}



結果
test.txtファイル書き込みが終わりました
fputs()は、文字列をまとめて書き込むのでループさせる必要はありません。
書き込まれた内容は同じです。

カテゴリ:C言語 stdio.h | 22:10 | comments(1) | trackbacks(0) | -


コメント

管理者の承認待ちコメントです。

| - | 2016/01/06 8:11 PM |

コメントする











この記事のトラックバックURL

http://simd.jugem.jp/trackback/51

トラックバック