文字列処理関数とは
・文字列に対する処理を行う関数である
文字列の複写、結合、比較、検索・・・
・文字列に対する処理は全て関数で行う
−文字(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()でファイルをクローズする
−最終的にはオープンしたすべてのファイルをクローズする
−クローズする順番は特にない