第13回資料 - 湘南工科大学 情報工学科 ホームページ

Download Report

Transcript 第13回資料 - 湘南工科大学 情報工学科 ホームページ

2012年1月17日
湘南工科大学
情報理論2
第13回
小林 学
〒251-8511 神奈川県藤沢市辻堂西海岸1-1-25
Tel.
0466-30-0232(直通)
Fax.
0466-34-5932
[email protected]
[A201教室でファイルを読み書きするプログラム作成の注意]
VisualStudio2010「新しいプロジェクト」画面において,「参照」ボタン
をクリックしてプロジェクトの保存「場所」を以下のように設定する
z:\document\MyDocument\VisualStudio 2010\Projects
チェックはなくす
[A201教室でファイルを読み書きするプログラム作成の注意]
読み込むファイルを置くフォルダは以下とする
z:\document\MyDocument\VisualStudio 2010\Projects\プロジェクト名
[例]testというプロジェクトを作成し,「demo.txt」というファイルを
読み込むプログラムを作成したい場合
z:\document\MyDocument\VisualStudio 2010\Projects\test
のフォルダに「demo.txt」を置く
[ファイル入力1]
#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
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");
printfと同様に書くと,ファ
イルに書き込まれる
//printfのようにファイルに書込む命令
fprintf(fp,"今日の日付は%d月%d日です", 12, 2);
fclose(fp);
}
return(0);
書込むファ
イルを指定
例題(foutput.c)
#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);
書込むファ
イルを指定
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);
[スペースで区切られたテキストファイルの読み込み方法]
data.txtの中身
小林学 神奈川県藤沢市辻堂 [email protected] 40
二宮洋 神奈川県藤沢市鵠沼 [email protected] 42
data.txtを読み込むプログラム
#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);
[課題4] 次のdata.txtファイルを読み込んで画面に表示するプログラムを完成さ
せなさい.ただし読み込むデータの変数は左から char name[20], int
nenrei, double taijuとしなさい.
data.txtの中身
小林学 40 71.5
二宮洋 42 68.5
鈴木誠 44 65.3
#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);
[課題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);