• 検索結果がありません。

Nakahashi 67

ドキュメント内 データ構造 (ページ 30-40)

例2

hashimoto 89 Nakahashi 67

Nakamoto 99

ipt1.dat

Tanaka 79 Nakata 73 ipt2.dat

hashimoto 89

Nakahashi 67

Nakamoto 99

例2

#include <stdio.h>

#define N 64 main()

{

char line[N];

FILE *fp_ipt1, *fp_ipt2, *fp_opt;

fp_ipt1=fopen(“ipt1.dat”, “r”);

fp_ipt2=fopen(“ipt2.dat”, “r”);

fp_opt=fopen(“opt.dat”, “w”);

while(fgets(line, N, fp_ipt1) != NULL) fputs(line, fp_opt);

while(fgets(line, N, fp_ipt2) != NULL) fputs(line, fp_opt);

fclose(fp_ipt1);

fclose(fp_ipt2);

fclose(fp_opt);

ファイルのオープン/クローズ関数

ファイルは読み書きを行う前にオープンし、使い 終わったらクローズする。

関数名 使い方 返値 機能

fopen FILE *fp;

fp=fopen(file, mode);

≠NULL:成功

=NULL:エラー

ファイルをmode 状態でオープンす

fclose FILE *fp; =0: 成功

エラー

fpで示すファイル modeの状態で ファイル名

ファイルポインタ変数を宣言

ファイルオープンの mode

mode

動作 ファイルが 存在しない 場合

ファイルが存 在した場合

“r”

ファイルから読み込 み

エラー

“w”

ファイルへ書き出し 作成する 内容は失わ れる

“a”

ファイルへ追加書き 出し

作成する ファイルの最 後から追加

文字(バイト)の入出力関数

関数名 使い方 機能

fgetc int c;

FILE *fp;

c=fgetc(fp);

(EOF:エラーまたはEOF)

fpが示す位置から1 文字を読み込み、

ファイルポインタを1 つ進める。

fputc int c;

FILE *fp;

fputc(c, fp);

fpが示す位置に変 cを書き出し、ファ イルポインタを1つ 進める。

文字列の入出力関数

関数名 使い方 機能

fgets #define N 64 char str[N];

FILE *fp;

fgets(str, N, fp);

(NULL:エラーまた EOF)

fpが示す位置から文字列をstr[]に読み 込む。文字は

N文字目まで

・改行まで

・ファイルの終わりまで

のいずれかの条件が満たされるまで 読み込まれる。

fputs char str[64];

FILE *fp;

fputs(str, fp);

fpが示す位置に文字列str[]を書き出す。

フォーマット化入出力関数

関数名 使い方 機能

fscanf FILE *fp;

fscanf(fp, “...”, ...);

EOF:エラー)

scanfと同じ。ただし、標準

入力からでなくファイルから。

fprintf FILE *fp;

fprintf(fp, “...”,...);

printfと同じ。ただし、標準

出力でなくファイルに書き 出す。

その他の関数

関数名 書式 返値 機能

feof int feof(fp); 0:ファイルの 終わりでない

0:ファイルの 終わり

fpで示すファイルがエンドオブファ イルかどうかを調べる。

fflush int fflush(fp); 0:エラーなし EOF:エラー

fpで示すバッファをファイルに書き 出す。

fseek int fseek(fp, offset, mode);

0:実行終了

0:エラー

fpで示すファイルポインタをmode からoffsetバイト移動する。

0:ファイルの始め

1:現在のファイルポインタの位置 2:エンドオブファイル

rewind int rewind(fp); 0:実行終了

0:エラー

fpで示すファイルポインタをファイ ルの先頭に移動する。

第7回実習課題

1.線形探索を実現する関数

int LSearch(int n, int a[],

int x)

を作成し、その動作を確認できるプログラム

ex07-lsearch.c

)を作成しなさい。ただし、

n

はデータ の個数、

a[]

はデータ配列である。

2.二分探索を実現する関数

int BSearch(int n, int a[],

int x)

を作成し、その動作を確認できるプログラム

ex07-bsearch.c

)を作成しなさい。ただし、

n

はデータ の個数、

a[]

はデータ配列である。また、探索過程に おいて、探索範囲内のデータを示しなさい。

第7回実習課題

3.文字列をソートする選択ソート関数

void

SelectionSort(int n, char a[][64])

を作成し、その動作 を確認できるプログラム(

ex07-ssort-str.c

)を作成しな さい。

4.文字列を探索する二分探索関数

int BSearch(int n, char a[][64], char x[])

を作成し、その動作を確認でき るプログラム

(ex07-bsearch-str.c)

を作成しなさい(発 展課題)。

5.演習問題3のプログラム(

ex07-add.c

)を作成しなさ い(発展課題)。

ドキュメント内 データ構造 (ページ 30-40)

関連したドキュメント