C言語 入門 小学生でもわかるC言語3

二日目 ファイルの値を利用する

「わかりやすく!」がテーマです!

HOME/小学生でもわかるC言語3 目次/二日目 ファイルの値を利用する/

広告

↓2016年02月29日発売↓

12歳からはじめる ゼロからのC言語 ゲームプログラミング教室

新品価格
¥2,462から
(2016/5/10 22:16時点)

もっと!C、C++言語本

目次へ戻る

?と思ったら

わからなそうな用語集

ファイルの値を利用する

では前回のファイルの内容

実行結果(i-2-1)

こちらを取り出してみます。

/*プログラム4*/
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>

int main(){
	int ary_get_c[256];
	int count = 0;
	FILE *fp;

	fp = fopen("test.txt", "r");
	if (fp == NULL){
		printf("ファイルオープン失敗\n");
		exit(1);
	}
	
	while (1){
		ary_get_c[count] = fgetc(fp);
		if (!feof(fp)){
			printf("%c", ary_get_c[count]);
			count++;
		}
		else break;
	}

	fclose(fp);
	return 0;
}

■実行結果■

実行結果(i-2-2)

前回読み込んだ内容を一時的に保存していた「int get_c」を配列にしてみました。

実行結果からきちんと配列内にファイルの内容がおさまっているみたいですね!

ちなみに配列をなぜに「256」もとっているかというとファイルからデータを取り出す時に何かしらの理由でこの配列の幅を超えてしまうような事があるといろいろマズイ事になるので(バッファオーバーフローといいます)、このような作業をする時は配列はまあまあ多めにとっておくのが良いと思います。

数字と文字コード

ではさっそく取り出した値を使ってみようと思いたいのですがそう簡単にはいきません。

さきほどのプログラムの

printf("%c", ary_get_c[count]);

この部分の「%c」を「%d」にしてもう一度実行してみてください。

■実行結果■

実行結果(i-2-3)

結果が49,50,51...となってしまいました。

するどい方はもうお気づきかと思いますがそうなんです。

文字コードとして表示したから「0〜9」と表示されたのです。

なのでこれを普通の数字「0〜9」と同じように使用するにはここから少しいじらなければいけません。

いくつか方法がありますがここでは単純に「49=1」という関係を考えます。

1,2,3→49,50,51のように並んでいるのでなんとなく想像はつくかと思われますが数字の「0」は「48」になります。

なので単純にそれぞれのデータから「48」を引けば数字の部分が残りそうですね。

/*プログラム5*/
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>

int main(){
	int ary_get_c[256];
	int count = 0;
	FILE *fp;

	fp = fopen("test.txt", "r");
	if (fp == NULL){
		printf("ファイルオープン失敗\n");
		exit(1);
	}
	
	while (1){
		ary_get_c[count] = fgetc(fp);
		ary_get_c[count] = ary_get_c[count] - 48;
		if (!feof(fp)){
			printf("%d", ary_get_c[count]);
			count++;
		}
		else break;
	}

	printf("\nary_get_c[1] + ary_get_c[3] = %d\n",
		ary_get_c[1] + ary_get_c[3]);

	fclose(fp);
	return 0;
}

■実行結果■

実行結果(i-2-4)

無事に数字に変換されたみたいですね!

ary_get_c[count] = ary_get_c[count] - 48;

ここで「48」を引いてます。

2ケタ以上の数字はどうするのかというギモンなどあると思いますがそこはまた少し後で説明したいと思います。

今できる簡単なアイデアとしては

ary_get_c[0] * 100

ary_get_c[1] * 10

ary_get_c[2] * 1

などのように自分で取り出すケタを決めてそれに合わせて100の位、10の位、1の位などのように加工してあげれば2ケタ以上の数字もいけるかもしれません。

それでは次回はファイルにデータを書き込んでみたいと思います。

次回

三日目 ファイル書き込み

□ページの先頭へ□

□目次へ戻る□

広告

↓2014年06月20日発売↓

14歳からはじめるC言語わくわくゲームプログラミング教室 Visual Studio 2013編

新品価格
¥2,500から
(2016/5/10 22:17時点)

↓2014年10月25日発売↓

超本格! サンプルで覚えるC言語 3Dゲームプログラミング教室

新品価格
¥3,110から
(2016/5/10 22:18時点)

↓2013年07月25日発売↓

小学生からはじめるわくわくプログラミング

新品価格
¥2,052から
(2016/5/10 22:21時点)

↓2016年05月13日発売↓

小学生からはじめるわくわくプログラミング2

新品価格
¥2,052から
(2016/5/10 22:22時点)

もっと!C、C++言語本