文字列処理関数とは ・文字列に対する処理を行う関数である 文字列の複写、結合、比較、検索・・・ ・文字列に対する処理は全て関数で行う −文字(char)型変数の配列として表現しているため 単純な処理にも関数の助けが必要 ・string.hをインクルードする必要がある 代表的な文字列処理関数 関数 機能 strcpy() 文字列を複写する strcat() 文字列を結合する strcmp() 文字列を比較する strlen() 文字列の長さを求める ファイルとは ・補助記憶装置にプログラムやデータを記憶(保存)する単位のこと テキストファイル 表示可能な文字だけで構成されているファイル バイナリファイル 何でもありのファイル ファイルの処理を行うには ・ファイルの処理(ファイルの読み書き)を行うには標準関数を使用する ・『ファイルポインタ』と呼ばれるポインタ変数を 利用しいてファイルの情報を管理する −ファイルポインタはfopen()関数で取得する −ほとんどのファイル処理関数で使用する −ただし、ファイルポインタの中身については知る必要はない ファイルの処理を行う手順 ____________________ [ファイルを開く(Open)] ~~~~~~~~~~~~~~~~~~~~ ↓ __________________________________ [[ファイルの読み書き(Read and Write)]] ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ↓ _______________________ [ファイルを閉じる(close)] ~~~~~~~~~~~~~~~~~~~~~~~ ファイルのオープンとクローズ オープン クローズ -------------------------------------------------- 関数 fopen() fclose() 備考 適切なアクセス 使用後のファイルは モードを設定する 必ずクローズする 注意 オープンに失敗した クローズ後のファイル 場合のエラー処理は ポインタは無効となる 必須である fopen()の使い方 機能 ファイルをオープン ヘッダファイル stdio.h プロトタイプ FILE *fopen(const char *filename, const char *mode); 引数 filename ファイル名 mode アクセスモード 戻り値 オープンしたファイルへのポインタ エラーが発生した場合はNULL ファイルのアクセスモード テキストモード バイナリモード ------------------------------------------------- 読み込みモード "r" "rb" 書き込みモード "w" "wb" 追加モード "a" "ab" アクセスモードの違い |入出力 |指定したファイルが | |存在する | 存在しない --------------------------------------------------- 読み込みモード |入力 |OK | エラー | | | 書き込みモード |出力 |既存のファイル| 新規作成 | |を破壊 | 追加モード |出力 |既存のファイル| 新規作成 | |に追記 | fclose()の使い方 機能 ストリーム(ファイル)をクローズ ヘッダファイル stdio.h プロトタイプ int fclose(FILE *stream) 引数 stream FILE構造体へのポインタ 戻り値 クローズに成功すると0 エラーが発生した場合はEOF ファイルの一行入出力 入力 出力 ---------------------------------------------- 関数 fgets() fputs() モード 読み込みモード(r) 書き込みモード(w) 追加モード(a) 備考 gets()と似ているが puts()と似ているが 改行文字も読み込ま 自動的には改行しない れる ※通常はテキストファイルに対して使用する fgets()の使い方 機能 ストリーム(ファイル)から文字列を読み込む ヘッダファイル stdio.h プロトタイプ char *fgets(char *string, int n, FILE *stream); 引数 string データの格納場所 n 格納する場所の大きさ stream FILE構造体へのポインタ 戻り値 成功すると引数が与えたstring ファイルの終端かエラーの場合はNULL fputs()の使い方 機能 ストリーム(ファイル)に文字列を書き込む ヘッダファイル stdio.h プロトタイプ char *fputs(const char *string, FILE *stream); 引数 string 書き込み文字列 stream FILE構造体へのポインタ 戻り値 成功すると負でない値 エラーが発生した場合はEOF sizeof()演算子 ・sizeof()は関数ではなく演算子である ・sizeof()演算子は次の情報を調べることができる −指定したデータ型の使用する領域のサイズ −指定した変数が使用している領域のサイズ sizeof()演算子の使用例 ・データ型が使用する領域のサイズを調べる sizeof(データ型名) ex. sizeof(int), sizeof(char *),..... 変数が使用している領域のサイズを調べる sizeof(変数名) 複数のファイルを同時に扱うには ・ファイルポインタを複数使用する ・fopen()で1つずつファイルをオープンする −それぞれに対してエラー処理を行う ・使用後はfclose()でファイルをクローズする −最終的にはオープンしたすべてのファイルをクローズする −クローズする順番は特にない