小小 小 [email protected] 2012 小 1 小 17 小 小小小小小小 小 251-8511 小小小小小小小小小 小小 西 1-1-25 Tel. 0466-30-0232( 小小 ) Fax. 0466-34-5932 小小小小 小 小 2 13
Jan 04, 2016
小林 学
2012 年 1 月 17 日湘南工科大学
〒 251-8511 神奈川県藤沢市辻堂西海岸 1-1-25
Tel. 0466-30-0232( 直通 )
Fax. 0466-34-5932
情報理論2 第13回
[ A201教室でファイルを読み書きするプログラム作成の注意 ]VisualStudio2010 「新しいプロジェクト」画面において,「参照」ボタンをクリックしてプロジェクトの保存「場所」を以下のように設定する
z:\document\MyDocument\VisualStudio 2010\Projects
チェックはなくす
[ A201教室でファイルを読み書きするプログラム作成の注意 ]読み込むファイルを置くフォルダは以下とする
z:\document\MyDocument\VisualStudio 2010\Projects\ プロジェクト名
[ 例 ]test というプロジェクトを作成し,「 demo.txt 」というファイルを読み込むプログラムを作成したい場合
のフォルダに「 demo.txt 」を置くz:\document\MyDocument\VisualStudio 2010\Projects\test
#include<stdio.h>
int main(void){FILE *fp;char moji;
fp = fopen("demo.txt","r");
while(1){moji = fgetc(fp);if(moji == EOF) break;printf("%c",moji);
}fclose(fp);
return(0);}
#include<stdio.h>
int main(void){FILE *fp;char moji;
fp = fopen("demo.txt","r");
while(1){moji = fgetc(fp);if(moji == EOF) break;printf("%c",moji);
}fclose(fp);
return(0);}
読み込むファイル名
r: 読込モード
ファイルから半角 1 文字が読込まれ、 moji
に入るha
開いたファイルを意味する変数
[ ファイル入力1 ]
fp = fopen(" ファイル名 ", " モード ");指定されたファイルを開く. fp は開いたファイルを意味する.“ モード” にはr :読込モード(読込専用)w :書込モード(書込専用、上書き)a :追記モード(書込だが、追記)
fclose(fp); ファイルを閉じる.必ず必要.
[ 前回の課題 1 解答 ] ファイル demo.txt から 4 文字読み込み, char 型の配列 str に入れなさい.(文字列の最後は 0を入れる点に注意)
#include<stdio.h>void main(void){
FILE *fp;char str[8];int i;
fp = fopen("demo.txt","r");
for(i=0;i<4;i++) str[i]=fgetc(fp);str[4]=0;
fclose(fp);printf("str=%s", str);
}
#include<stdio.h>
int main(void){FILE *fp;
fp=fopen("write.txt","w");
fprintf(fp," 今日の日付は %d 月 %d 日です ", 12, 2);
fclose(fp);
return(0);}
#include<stdio.h>
int main(void){FILE *fp;
fp=fopen("write.txt","w");
fprintf(fp," 今日の日付は %d 月 %d 日です ", 12, 2);
fclose(fp);
return(0);}
書込むファイル名
書込みモード
//printf のようにファイルに書込む命令
printf と同様に書くと,ファイルに書き込まれ
る
書込むファイルを指定
[ ファイル出力 ]
#include<stdio.h>#include<math.h>void main(void){
FILE *fp;double x, y, z;
fp = fopen("write.csv","w");
for(x=0; x < 2*3.14159; x = x + 0.01){y = sin(x);z = cos(x);fprintf(fp,"%lf,%lf,%lf\n", x, y, z);
}fclose(fp);
}
#include<stdio.h>#include<math.h>void main(void){
FILE *fp;double x, y, z;
fp = fopen("write.csv","w");
for(x=0; x < 2*3.14159; x = x + 0.01){y = sin(x);z = cos(x);fprintf(fp,"%lf,%lf,%lf\n", x, y, z);
}fclose(fp);
}
例題 (foutput.c)
書込むファイル名
書込みモード
printf と同様に書くと,ファイルに書き込まれ
る
書込むファイルを指定
[ 課題 2] 架空の 3 人の氏名,住所,メールアドレスをwrite.csv ファイルに書き出すプログラムを完成させなさい.#include<stdio.h>
void main(void){FILE *fp;
fp = fopen("write.csv", "w");
??? // ここにプログラムを書く
fclose(fp);}
[ 課題 3] 関数 y = x3-2x2+1 とする. x=-2,-1.9,...,1.9,2 それぞれに対し, x,y の値をそれぞれ write.csv ファイルに書き込むプログラムを作成しなさい.また Excel で図を表示しなさい.#include<stdio.h>
void main(void){FILE *fp;double x, y;
fp = fopen("write.csv", "w");
for(x=-2; x<2.1; x=x+0.1){??? // ここにプログラムを書く
}
fclose(fp);}
#include<stdio.h>void main(void){
char name[20], address[100], email[100];FILE *fp;int i, age;
fp=fopen("data.txt","r");for(i=0;i<2;i++){
fscanf(fp, "%s %s %s %d",name, address, email, &age);
printf("%s %s %s %d\n",name,address,email,age);}fclose(fp);
}
#include<stdio.h>void main(void){
char name[20], address[100], email[100];FILE *fp;int i, age;
fp=fopen("data.txt","r");for(i=0;i<2;i++){
fscanf(fp, "%s %s %s %d",name, address, email, &age);
printf("%s %s %s %d\n",name,address,email,age);}fclose(fp);
}
[ スペースで区切られたテキストファイルの読み込み方法 ]
data.txt の中身
小林学 神奈川県藤沢市辻堂 [email protected] 40二宮洋 神奈川県藤沢市鵠沼 [email protected] 42
小林学 神奈川県藤沢市辻堂 [email protected] 40二宮洋 神奈川県藤沢市鵠沼 [email protected] 42data.txt を読み込むプログラム
[ 課題 4] 次の data.txt ファイルを読み込んで画面に表示するプログラムを完成させなさい.ただし読み込むデータの変数は左から char name[20], int nenrei, double taiju としなさい.
#include<stdio.h>void main(void){
FILE *fp;char name[20];int nenrei, i;double taiju;
fp = fopen("data.txt", "r");for(i=0;i<3;i++){
??? // ここにプログラムを書く}fclose(fp);
}
小林学 40 71.5二宮洋 42 68.5鈴木誠 44 65.3
小林学 40 71.5二宮洋 42 68.5鈴木誠 44 65.3
data.txt の中身
[ 課題 5] 課題 3 の x,y をスペース区切りで data.txt にファイル出力し,さらに data.txt の内容を読み込んで画面に表示するプログラムを作成しなさい.
#include<stdio.h>void main(void){
FILE *fp;double x, y;int i;
fp = fopen("data.txt", "w");for(x=-2; x<2.1; x=x+0.1){
??? // ここにプログラムを書く}fclose(fp);fp = fopen("data.txt", "r");for(i=0;i<???;i++){
??? // ここにプログラムを書く}fclose(fp);
}