第7回演習:解答例


演習課題

(1)キーボードから入力した数値をファイルに保存するプログラムを作成せよ.


#include <stdio.h>
#include <stdlib.h>

void main()
{
	float number;
	char filename[] = "test.txt";
	FILE *wfp;
	
	printf("Please input number : ");
	scanf("%f",&number);
	
	if((wfp=fopen(filename, "w"))==NULL){
		printf("Can't open %s",filename);
		exit(0);
	}
	
	fprintf(wfp,"%f",&number);
	fclose(wfp);
	
}

(2)上問で作ったファイルに保存された数値を読み込み,画面に表示するプログラムを作成せよ.

]

#include <stdio.h>
#include <stdlib.h>

void main()
{
	float number;
	char filename[]="test.txt6quot;;
	FILE *ofp;
	
	if((ofp=fopen(filename, "r"))==NULL){
		printf("Can't open %s",filename);
		exit(0);
	}
	
	fscanf(ofp,"%f",&number);
	printf("number : %0.2f",number);
	fclose(ofp);
}

(3)角度を0度から360度まで変えたときの,sinやcos, tanなどの値を各行に出力するプログラムを作成せよ.

ファイル名は,"sin.csv"としよう.ファイル名の末尾に .csv (拡張子と呼ぶ)をつけると,Excelで簡単に開くことができる.

sin(), cos()などの算術関数を使う際には #include<math.h> を書くこと.

結果の例: 

0.000000
0.017452
0.034898
....


#include <stdio.h>
#include <stdlib.h>
#include <math.h>

void main()
{
	int i;
	double pi=3.1415926;
	char filename[] = "sin.csv";
	FILE* wfp;
	
	if((wfp=fopen(filename,"w"))==NULL){
		printf("Can't open %s",filename);
		exit(0);
	}
	
	for(i=0;i<360;i++){
		fprintf(wfp,"%lf,%lf,%lf,\n",sin(i/180.0*pi),cos(i/180.0*pi),tan(i/180.0*pi));
	}
	
}

関数とポインタの復習

(4)キーボードから文字列を入力すると,文字数を数えて値を返す関数を作成せよ.


#include <stdio.h>

void input_char(char str[])
{
	printf("Please input stracher:");
	scanf("%s",str);
}

int char_length(char str[])
{
	int i;
	
	for(i=0;str[i]!=NULL;i++){
	}
	
	return i;
}

void main()
{
	char str[256];
	
	input_char(str);
	
	printf("%s¥n",str);
	
	printf("文字数は、%dです\n",char_length(str));
	
}