C言語 ファイルのエラー判定 終端判定 エラーのクリア - stdio.h - [ ferror, feof, clearerr ]
2008.09.30 Tuesday | by LRESULT
ファイルのエラー判定には、ferror()を使い、
エラーのクリアには、clearerr()を使用します。
また、ファイルの終端(EOF)判定には、feof()という関数が用意されています。
書式 | int ferror( FILE *fp ) |
---|---|
機能 | ファイルのエラー状態を判定する |
引数 | FILE *fp : ファイル(ストリーム)ポインタ |
戻り値 | エラーの場合は、0以外を返し、 正常な場合は、0を返します。 |
書式 | int feof( FILE *fp ) |
---|---|
機能 | ファイルの終端(EOF)判定を行う |
引数 | FILE *fp : ファイル(ストリーム)ポインタ |
戻り値 | 終端の場合は、0以外を返し、 終端で無い場合は、0を返します。 |
書式 | void clearerr( FILE *fp ) |
---|---|
機能 | エラー状態をクリアする |
引数 | FILE *fp : ファイル(ストリーム)ポインタ |
戻り値 | なし |
※ ferror()やfeof()が用意されているかというと、
fgetc()やfscanf()等ではエラーが起こった場合と、ファイル終端まで読み込んだ場合とで
同じEOF(-1)を戻り値として返してしまい区別が付かないため、
別々の関数として用意してあるわけです。
C言語 ファイル位置を先頭に戻す - stdio.h - [ rewind ]
2008.09.29 Monday | by LRESULT
ファイル位置を先頭に戻すには、rewind()を使います。
ファイル位置とは、テキストエディタのカーソル(キャレット)位置のようなもので
読み込みと書き込みの基準となる位置です。
書式 | void rewind( FILE *fp ) |
---|---|
機能 | ファイル位置を先頭に戻す |
引数 | FILE *fp : ファイル(ストリーム)ポインタ |
戻り値 | なし |
ファイル位置を先頭に戻すには、
fseek( fp, 0, SEEK_SET );
も、同じ意味となります。
C言語 ファイル位置の設定 ファイルサイズの取得 - stdio.h - [ fseek ]
2008.09.28 Sunday | by LRESULT
ファイル位置の設定は、fseek()を使用します。
ファイル位置とは、ファイルにおけるカーソル位置のようなもので
読み込み書き込みの規準となる位置のことです。
書式 | int fseek( FILE *fp, long offset, int origin ) |
---|---|
機能 | ファイル位置を原点位置から移動させ設定する |
引数 | FILE *fp : ファイル(ストリーム)ポインタ long offset : 指定位置からのズレ量 int origin : 原点位置の種類 |
戻り値 | 成功すると、0を返し、 失敗すると、0以外を返します。 |
また、引数origin の種類には以下のものが定義されています。
SEEK_SET | ファイルの先頭位置を指定 |
---|---|
SEEK_CUR | ファイルの現在位置を指定 |
SEEK_END | ファイルの終端位置を指定 |
つまり、引数origin に SEEK_SETを設定すると、fsetpos()とほぼ同じ機能となります。
※ ちなみに、ftell()と、fgetpos()の違いは、型がfpos_t型かlong型かの違いです。
VC8では、fpos_t型は、_int64で定義されている為、
long型に比べて、ファイルサイズが2GBを超えても大丈夫なわけです。
なので、fgetpos()を使用したほうが安全と言えるかもしれません。
( さらに補足 ・・ _int64型の最大値は8エクサです! ギガ < テラ < ペタ < エクサ )
C言語 ファイル位置の取得 ファイルサイズの取得 - stdio.h - [ ftell ]
2008.09.28 Sunday | by LRESULT
ファイル位置の取得は、ftell()を使用します。
ファイル位置とは、カーソル位置のようなもので
読み込み書き込みの規準となる位置のことです。
書式 | long ftell( FILE *fp ) |
---|---|
機能 | 現在のファイル位置を取得 |
引数 | FILE *fp : ファイル(ストリーム)ポインタ |
戻り値 | 成功すると、現在のファイル位置を返し、 失敗すると、-1を返します。 |
C言語 ファイル位置の設定 - stdio.h - [ fsetpos ]
2008.09.27 Saturday | by LRESULT
ファイル位置の設定には、fsetpos()を使用します。
まず、ファイル位置とは、なに? というとこから。
例えば、fopen()を使用してファイルを読み取りモード "r" で開いた直後では、
ファイル位置は先頭の0です。
そこから、fgetc()で5文字読み取った後では、ファイル位置は5となります。
書き込んだ場合でも同様で、5文字書き込んだ後では、ファイル位置は5となります。
つまり、カーソル位置のようなもので、
正確にはファイル位置指示子といい、FILE型変数の指している位置となります。
書式 | int fsetpos( FILE *fp, const fpos_t *pos ) |
---|---|
機能 | ファイル位置の設定 |
引数 | FILE *fp : ファイル(ストリーム)ポインタ const fpos_t *pos : ファイル位置格納 |
戻り値 | 成功すると、0を返し、 失敗すると、0以外を返します。 |
上で出て来た fpos_t型とは、ファイル位置を格納する為の型ですが、
typedef long fpos_t
というように、実際にはlong型です。(※ VC8では、_int64で定義されています)
C言語 ファイル位置の取得 - stdio.h - [ fgetpos ]
2008.09.27 Saturday | by LRESULT
ファイル位置の取得には、fgetpos()を使用します。
まず、ファイル位置とは、なに? というとこから。
例えば、fopen()を使用してファイルを読み取りモード "r" で開いた直後では、
ファイル位置は先頭の0です。
そこから、fgetc()で5文字読み取った後では、ファイル位置は5となります。
書き込んだ場合でも同様で、5文字書き込んだ後では、ファイル位置は5となります。
つまり、カーソル位置のようなもので、
正確にはファイル位置指示子といい、FILE型変数の指している位置となります。
書式 | int fgetpos( FILE *fp, fpos_t *pos ) |
---|---|
機能 | ファイル位置の取得 |
引数 | FILE *fp : ファイル(ストリーム)ポインタ fpos_t *pos : ファイル位置格納 |
戻り値 | 成功すると、0を返し、 失敗すると、0以外を返します。 |
上で出て来た fpos_t型とは、ファイル位置を格納する為の型ですが、
typedef long fpos_t
というように、実際にはlong型です。(※ VC8では、_int64で定義されています)
C言語 ファイルの削除 - stdio.h - [ remove ]
2008.09.26 Friday | by LRESULT
ファイルを削除するには、remove()を使います。
書式 | int remove( const char *filename ) |
---|---|
機能 | ファイルの削除 |
引数 | const char *filename : 削除するファイル名 |
戻り値 | 成功すると、0を返し、 失敗すると、0以外を返します。 |
空フォルダの削除くらい出来るのかなと思ってましたが、
ファイル削除のみの機能でした
C言語 ファイル名 フォルダ名の変更と移動 - stdio.h - [ rename ]
2008.09.25 Thursday | by LRESULT
ファイル名、ディレクトリ(フォルダ)名を変更するには、rename()を使います。
rename()と言うと、名前を変えるだけに見えますが、
ファイルやフォルダの移動も出来てしまいます。お得ですね?
書式 | int rename( const char *oldname, const char *newname ) |
---|---|
機能 | ファイル名、フォルダ名の変更と移動 |
引数 | const char *oldname : 元のファイル名(or フォルダ名) const char *newname : 新しいファイル名(or フォルダ名) |
戻り値 | 成功すると、0を返し、 失敗すると、0以外を返します。 |
C言語 バイナリファイルの書き込み バイナリファイルのコピー - stdio.h - [ fwrite ]
2008.09.24 Wednesday | by LRESULT
バイナリファイルの書き込みには、fwrite()関数を使用します。
fopen()のオープンモードを、"wb"とするのを忘れないようにして下さい。
書式 | size_t fwrite( const void *buf, size_t size, size_t num, FILE *fp ) |
---|---|
機能 | バイナリファイルを書き込む |
引数 | const void *buf : バイナリデータを書き込むバッファ size_t size : データ要素1個のサイズ size_t num : データの個数 FILE *fp : ファイル(ストリーム)ポインタ |
戻り値 | 書き込んだデータ要素の個数を返します。 |
C言語 CSVファイルの書き込み - stdio.h - [ fprintf ]
2008.09.23 Tuesday | by LRESULT
CSVファイルの書き込みです。
CSVファイルとは、それぞれのデータが『,』(カンマ)で区切られたファイルです。
整数や、小数、文字列が入り混じったデータをCSVファイルで保存するには、
書式付で書き込みの出来る fprintf()関数が適しています。
書式 | int fprintf( FILE *fp, const char *format, ... ) |
---|---|
機能 | ファイルへ書式付きで書き込む |
引数 | FILE *fp : ファイル(ストリーム)ポインタ const char *format : 書式文字列 ... : 可変個引数。書式で指定された変数をカンマ区切りで指定 |
戻り値 | 成功すると、書き込んだバイト数を返し、 失敗すると、負値を返します。 |