バイトから帰ったらですね、、、とてもビックリするような出来事があったんです。いつものように、音楽を流しながらメールチェックをしていると、玄関をドンドン強く叩く音がするんです。しかも、おいらが遅番から帰ってきた直後の夜11時にですよ。もう、ちょービックリして、どこのワルイヤツがウチに乗り込もうとしているのか、心臓バクバクでしたよ。

で、反射的に玄関へと出向いたワケなんですが、正体は警察学校に通っている友達、福井ちゃんでした。今から富士五湖のほうへと釣りへ出かけるようです。まだ夜になったばかりだというのに、ご苦労なことです。それにしても、ガチンコでおいらを驚かすのはやめていただきたい…。寿命が一日くらい縮んだかもしれません←それだけかよ/(–)/

「じゃ〜な〜」といって、福井ちゃんはおいらを驚かすとそそくさと去ってしまったんで、この迷惑な出来事をコモトちゃんにMSNで伝えます。コモトちゃんは驚いてはくれたんですが、「DCT変換をC言語で」というレポートに戸惑っているようで、逆に質問されてしまいました。

・・・・・それから1時間、こんな真夜中にも関わらず、暇つぶしを兼ねてコモトちゃんのレポートに付き合ったというわけです。どうも、自分で書いたプログラムコードが上手くいかない模様だったので、まずはそのソースを送ってもらいました。色々と調べた後、ファイルからの値読み込みが上手くいっていないのを発見。すぐさま修正して教えてあげました。

間違った部分はこんな感じ

double dbl;

fscanf(fp,”%d”,&dbl);

printf(“%d”,dbl);

ファイルの内容はきちんと表示されるのに、なぜかdbl変数の内容が正常じゃない。もう皆さんはお気づきでしょうか?そうです。dbl変数には、32ビット整数型で中途半端に値が読み込まれているのです。無理やり、”%d”でprintfしたので値は正常に表示されているってところがミソですな。

この間違いコードを、すぐさま下のように修正して送り返してやりました。

double dbl;

int temp;

fscanf(fp,”%d”,&temp);

dbl=(double)temp;

printf(“%f”,dbl);

scanfってのは、double型の読み込みができなかったんでしたっけ??ちょっとど忘れ(汗)。今回のコードでは、整数の読み込みだったので、tempというint型変数を介してdblに読み込むという手法を使ってみました。

なんか、C言語初心者がよく間違えそうなコードですな。初心者でなくても、膨大なコードの中にこの間違いが埋もれていたら、探すのにちょっと時間がかかってしまうかも!?おいらは電話片手に無駄話をしながらキーボードをポチポチしていたので、かなり長電話になってしまいました。

コモトちゃんよ、プログラミングより、夏だよ。夏の夜といえば…?