トップ->C言語入門

あなたは

人目のC(C++)言語入門受講生です。

C言語入門内検索

目次
C言語入門〜トップ
C++言語入門〜トップ
0. はじめに

1. 基本的な決まり
   1. 書式
   2. 予約語
   3. 構成
   4. データの形と宣言
   5. 定数と変数
   6. 簡単な演算

2. 入出力
   1. printf
   2. scanf
   3. 練習問題1
   4. 1文字入出力
   5. エスケープシーケンス

3. 制御文
   1. 順次構造
   2. 単一分岐
   3. 多重分岐
   4. ケース構造
   5. 反復構造(while)
   6. 反復構造(do)
   7. 反復構造(for)
   8. 補助制御文
   9. 練習問題
   10.練習問題

4. 配列
   1. 配列とは
   2. 配列の宣言と初期化
   3. 配列の使用法
   4. 練習問題
   5. 文字列
   6. 2次配列と多次元配列
   7. 練習問題

5. 演算子
   1. 演算子の種類
   2. インクリメント演算子とデクリメント演算子
   3. 複合代入演算子
   4. ビット演算子
   5. シフト演算子
   6. キャスト演算子
   7. 順次演算子
   8. 条件演算子(三項演算子)
   9. sizeof演算子
   10.演算子の優先順位
   11.式と値
   12.条件式と値
   13.練習問題

6. ポインタ
   1. ポインタとは
   2. 配列とポインタ
   3. 文字列とポインタ
   4. ポインタのメリット

7. 関数
   1. 関数の作り方
   2. プロトタイプ宣言
   3. 配列とポインタ
   4. 値渡しとアドレス渡し
   5. main関数の引数
   6. 練習問題
   7. 標準関数
   8. 再帰関数

8. プリプロセッサ
   1. プリプロセッサとは
   2. #define, #undef
   3. #include
   4. #if
   5. #error、#warning
   6. マクロ
   7. 定義済みマクロ

9. 変数の有効範囲
   1. 変数の種類
   2. グローバル変数の有効範囲
   3. オート変数の有効範囲
   4. スタティック変数の有効範囲

10. 構造体
   1. 構造体とは
   2. 構造体の宣言
   3. 構造体の使用法
   4. 構造体のポインタ
   5. 構造体の構造体
   6. 構造体と関数
   7. 練習問題

11. 共用体
   1. 共用体とは
   2. 共用体の宣言
   3. 共用体の使用法

12. ファイル
   1. ファイル
   2. ファイル構造体
   3. ファイル作成・オープン
   4. ファイル読み込み
   5. ファイル書き込み
   6. ファイルクローズ
   7. ファイルエラー
   8. ランダムアクセス
   9. 標準入出力
   10. 練習問題
   11. ファイルの検索
   12. ファイルの削除
   13. ファイル名変更
   14. ディレクトリ操作

13. 低水準入出力関数
   1. 高水準入出力関数との違い
   2. ファイル作成
   3. ファイルオープン
   4. ファイル読み込み
   5. ファイル書き込み
   6. ファイルクローズ
   7. 標準入出力
   8. ランダムアクセス
   9. ファイルポインタとファイルディスクリプタ
   10. 練習問題

14. データ構造
   1. データ構造とは
   2. データ構造の種類
   3. 線形リスト
     4. 単方向リスト
     5. 双方向リスト
     6. 環状リスト
   7. ベクター
   8. 木
     9. 二分検索木
   10. スタック
   11. キュー

15 標準関数
   1. 文字分類・文字変換
   2. 文字列操作
   3. データ変換
   4. メモリー操作
   5. 数値演算
   6. ファイル操作(高水準入出力関数)
   7. ファイル操作(低水準入出力関数)
   8. プロセス関係

16 関数ポインタ
   1. 関数ポインタとは
   2. 関数ポインタ
   3. 関数ポインタと引数・戻り値
   4. 関数ポインタの配列

17. そしてその後は (PR)
   1. ヒューマンアカデミー C言語講座
   2. el school C言語講座
   3. C++入門


・ このページの先頭に戻る
・ トップページに戻る


・ このページの先頭に戻る
・ トップページに戻る

トップ-> C言語入門:標準関数-> 15-6. ファイル操作(高水準入出力関数)

←前ページへ :  トップへ :  次ページへ→


15-6.ファイル操作(高水準入出力関数)

  ここでは、ファイル操作関数を紹介します。詳しくは12章を参照してください。

  ここで紹介する関数を使用するには<stdio.h>を インクルードする必要があります。なおディレクトリ関連の関数を使用するには<dir.h>を インクルードする必要があります。


ファイル作成・オープン

関数名 fopen
書式 FILE* fopen( const char* filename, const char* mode )
戻り値 NULL=エラー
NULL≠FILE構造体へのポインタ
機能 第一引数の渡されたファイル名を
第二引数で渡されたモードでオープンする(作成する)

モード(第二引数) 動作 ファイルが存在しない場合 ファイルが存在する場合
"r" 読込モード エラー
"w" 書込モード 新しいファイルを作成 内容が失われる
"a" 追加書込 新しいファイルを作成 既存ファイルの最後に追加
"r+" 読込・書込モード エラー
"w+" 読込・書込モード 新しいファイルを作成 内容が失われる
"a+" 読込・追加書込モード 新しいファイルを作成 既存ファイルの最後に追加

モード(第二引数)に
追加する文字
モード 機能
t テキストモード 読込時:CR,LF('\r','\n')をLF('\n')に変換する
書込時:LF('\n')をCR,LF('\r','\n')に変換する
b バイナリモード テキストモードのような変換を行わない


ファイル読み込み

関数名 fgetc
書式 int fgetc( FILE* fp )
戻り値 EOF:エラーもしくは、ファイル終端
それ以外:読み込んだ文字
機能 ファイルを現在位置から1バイト読み込み、その文字を返す。
ファイルポインタを一つ進める

関数名 fgets
書式 char* fgets( char* p, int n, FILE* fp )
戻り値 NULL:エラーもしくは、ファイル終端
それ以外:読み込んだ文字列の格納場所
機能 ファイルを現在位置から「n-1バイト」あるいは、改行(LF='\n')かファイル終端までpに読み込む。
ファイルポインタを読み込んだ分進める。
文字列の最後にはNULLを自動的にふかしてくれる。

関数名 fscanf
書式 int fscanf( FILE* fp, const char* format, ... )
戻り値 EOF:エラーもしくは、ファイル終端
それ以外:読み込んだ項目数
機能 第二引数以降はscanf関数と同じです。
読み込んだバイト数だけファイルポインタを進める

関数名 fread
書式 size_t fread( void* buffer, size_t size, size_t count, FILE* fp )
戻り値 EOF:エラー
それ以外:実際に読み込んだ項目数
機能 ファイルを現在位置から、1項目sizeバイトのデータをcount個読み込み、bufferに格納する。
戻り値がcountよりも小さい場合は、エラーかファイル終端に到達したことになります。


ファイル書き込み

関数名 fputc
書式 int fputc(int ch, FILE* fp )
戻り値 EOF:エラーもしくは、ファイル終端
それ以外:書き込んだ文字
機能 ファイルの現在位置から1バイト書き込み、その文字を返す。
ファイルポインタを一つ進める

関数名 fputs
書式 int fputs( char* p, FILE* fp )
戻り値 EOF:エラー
それ以外:書き込んだ最後の文字
機能 ファイルを現在位置へ、pからNULL文字までファイルに書き込む。
ファイルポインタを書き込んだ分進める。
文字列の最後にはNULLを自動的にふかしてくれる。

関数名 fprintf
書式 int fprintf( FILE* fp, const char* format, ... )
戻り値 負の値:エラー
それ以外:書き込んだ文字数
機能 第二引数以降はprintf関数と同じです。
書き込んだバイト数だけファイルポインタを進める

関数名 fwrite
書式 size_t fwrite( void* buffer, size_t size, size_t count, FILE* fp )
戻り値 戻り値<count:エラー
戻り値=count:正常実行
機能 bufferに格納されているsizeバイトのデータをcount個書き込み、ファイルポインタを進めます。


ファイルクローズ

関数名 fclose
書式 int fclose( FILE* fp )
戻り値 EOF:エラー
0:正常終了
機能 ファイルをフラッシュし、クローズする

関数名 fcloseall
書式 int fcloseall()
戻り値 EOF:エラー
0:正常終了
機能 標準入力(stdin)、標準出力(stdout)、標準エラー出力(stderr)、(MS-DOS系OSでは、 標準補助入出力 (stdaux) と標準プリンタ出力 (stdprn) )を除くファイルをフラッシュしてクローズする。
一時ファイルは削除されます。

関数名 fflush
書式 int fflush( FILE* fp )
戻り値 EOF:エラー
0:成功かフラッシュする必要がない
機能 書込モード:実際にディスクに書き込む
読込モード:バッファーをクリアする
FILE構造体のポインタがNULLの場合:すべてのファイルをフラッシュする


エラー関連

関数名 feof
書式 int feof( FILE* fp )
戻り値 0:ファイル終端ではない
0以外:ファイル終端
機能 ファイルの終端まで到達したかどうかを調べる

関数名 ferror
書式 int ferror( FILE* fp )
戻り値 0:エラーなし
0以外:エラーが発生している
機能 直前のファイル操作でエラーが発生しているかどうかを調べる

関数名 fclearerr
書式 void fclearerr( FILE* fp )
戻り値 なし
機能 エラーフラグをクリアする


ランダムアクセス

関数名 ftell
書式 long ftell( FILE* fp )
戻り値 -1:エラー
-1以外:現在の位置
機能 ファイルポインタの位置を返す
(戻り値が0の時はファイルの最初を示している)

関数名 fseek
書式 int fseek( FILE* fp, long offset, int origin )
戻り値 0:エラーなし
0以外:エラーが発生している
機能 ファイルポインタをoriginからoffsetバイトの新しい位置に移動します。 以後の処理は移動したファイルポインタを基点に行われます。

また、originは以下の値を 指定します。
 SEEK_SET・・・ファイルの先頭を基点にする
 SEEK_CUR・・・現在のファイルポインタを基点にする
 SEEK_END・・・ファイルの終端を基点にする

stdio.hに#defineされていますが、コンパイラによっては定義されていない場合があります。 その場合は以下の値を使います。
 0・・・ファイルの先頭を基点にする
 1・・・現在のファイルポインタを基点にする
 2・・・ファイルの終端を基点にする

関数名 frewind
書式 void frewind( FILE* fp )
戻り値 0:正常実行
0以外:エラー
機能 ファイルポインタをファイルの先頭に移し、エラーフラグをクリアします。


ファイルの検索

意味
unsigned attribファイルの属性
time_t time_createファイルの作成時刻
(FAT ファイル システムでは -1L)
time_t time_accessファイルを最後にアクセスした時間
(FATファイル システムでは -1L)
time_t time_writeファイルに最後に書き込んだ時刻
_fsize_t sizeバイト単位でのファイルの長さ
char name[_MAX_FNAME]一致したファイルおよびディレクトリの名前を表すASCIIZ文字列
(パス名は付きません)

関数名 _findfirst
書式 long _findfirst( char* filespec, _finddata_t* fileinfo )
戻り値 -1=エラー(ファイルが見つからない、もしくは無効なターゲットを指定した)
-1≠検索のためのハンドル
機能 第一引数の渡されたターゲットファイル名を検索し、
その結果を第二引数で渡された構造体に入れる。

関数名 _findnext
書式 int _findnext( long handle, _finddata_t* fileinfo )
戻り値 -1=エラー(ファイルが見つからない)
0=この関数が成功した
機能 第一引数に_findfirstで返されたハンドルを指定し、
次に一致するファイルを検索し、その結果を第二引数で渡された構造体に入れる。

関数名 _findclose
書式 int _findclose( long handle )
戻り値 -1=エラー(ファイルが見つからない)
0=この関数が成功した
機能 第一引数に_findfirstで返されたハンドルを指定し、
検索のためのハンドルをクローズし、使用していたりソースを解放します。


ディレクトリ関連

関数名 _mkdir
書式 int _mkdir( const char* dirname )
戻り値 -1=エラー
0=この関数が成功した
機能 ディレクトリを作成します。

関数名 _rmdir
書式 int _rmdir( const char* dirname )
戻り値 -1=エラー
0=この関数が成功した
機能 ディレクトリを削除します。

関数名 _chdir
書式 int _chdir( const char* dirname )
戻り値 -1=エラー
0=この関数が成功した
機能 カレントディレクトリを変更します。

関数名 _chdrive
書式 int _chdrive( int drive )
戻り値 -1=エラー
0=この関数が成功した
機能 カレントディスクを変更します。

関数名 _getcwd
書式 char* _getcwd( char* buffer, int maxlen )
戻り値 NULL=エラー
NULL≠この関数が成功した
機能 カレントディスクのカレントディレクトリを取得します。

関数名 _getdcwd
書式 char* _getdcwd( int drive, char* buffer, int maxlen )
戻り値 NULL=エラー
NULL≠この関数が成功した
機能 指定したディスクのカレントディレクトリを取得します。

関数名 _getdrive
書式 int _getdrive()
戻り値 ドライブ番号(1=Aドライブ,2=Bドライブ)
機能 カレントドライブを取得します。

関数名 _fullpath
書式 char* _fullpath( char* absPath, const char* relPath, size_t maxLength )
戻り値 NULL=変換できなかった。(バッファサイズが小さい、存在しないパスなど)
NULL≠変換された。
機能 relPathで与えられた相対パスを絶対パスに変換しabsPathに格納する。
ただしabsPathのバッファサイズはmaxLengthとする。


その他

関数名 remove
書式 int remove( const char* path )
戻り値 -1=エラー(ファイルが見つからない)
0=この関数が成功した
機能 第一引数の渡されたターゲットファイル名を検索し、
その結果を第二引数で渡された構造体に入れる。

関数名 rename
書式 int rename( const char* oldname, const char* newname )
戻り値 -1=エラー
0=この関数が成功した
機能 第一引数のファイル名を第二引数のファイル名に変更します。

※関数名が[_]で始まっている関数は、プラットフォーム(OSやコンパイラなど)によっては 使用できない場合があります。


←前ページへ :  トップへ :  次ページへ→