C言語 テキストファイルの書き込み - stdio.h - [ fputc, putc, fputs ]
2008.09.22 Monday | by LRESULT
テキストファイルの書き込みです。
ファイル読み込みと同じように、fopen()関数で取得したFILE型ポインタを使用します。
基本的に、fgetc()やfgets()の反対語の、fputc()、putc()、fputs()というように、
「get」が「put」に置き換わります。
ファイル書き込みする際は、fopen()のモードを、"w"や"a"など、
書き込みモードで開くことを忘れないようにして下さい。
書式 | int fputc( int c, FILE *fp ) |
---|---|
機能 | 1文字ずつファイルへ書き込み |
引数 | int c : 出力する1文字 FILE *fp : ファイル(ストリーム)ポインタ |
戻り値 | 成功すると、出力した文字を返し、 失敗すると、EOF(-1)を返します。 |
書式 | int putc( int c, FILE *fp ) |
---|---|
機能 | fputc()と同じ機能の関数で、マクロで定義されている事のみ異なります 1文字ずつファイルへ書き込み |
引数 | int c : 出力する1文字 FILE *fp : ファイル(ストリーム)ポインタ |
戻り値 | 成功すると、出力した文字を返し、 失敗すると、EOF(-1)を返します。 |
書式 | int fputs( const char *str, FILE *fp ) |
---|---|
機能 | 文字列を、まとめてファイル書き込み |
引数 | const char *str : 出力する文字列 FILE *fp : ファイル(ストリーム)ポインタ |
戻り値 | 成功すると、0以上の値を返し、 失敗すると、EOF(-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」という名前のファイルが作成されています。 |
次に、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()は、文字列をまとめて書き込むのでループさせる必要はありません。 書き込まれた内容は同じです。 |