雨すごい


今日は何だろう。ほんとに雨がすごいですよ。もうね。なんだろうね(´・ω・`)
朝から雨っていうのは気分的にもよろしくないですよね。やっぱり朝はお日様の光を浴びたいんですわ。曇り空には用はねえっ みたいな。そんなことを考えながらも、今日も朝一の授業があるのでちゃっちゃと学校へ向かう僕です。今日の授業はえーと、述語論理の話でした。ちょっと頭を使う話で、そんなに退屈することもなかったんですが、途中休憩なしだったの終盤はちょっと眠たかったです。
昼はデンマークな人と駅前のパン屋に行きました。ちょっと前にできたちょっとおされな感じのパン屋です*1。ピーチティーとコーヒーが飲み放題なところが好きです。もちろんパンも美味くて安いしね!でも今日はコーヒーメーカーの故障かなんかで、コーヒーを飲むことができませんでした。それだけが心残りです。パン屋の隣にあるスーパーで卵が安く買えたのでそいつのおかげで気分的にはチャラって感じですが。
明後日の授業で発表しなくちゃいけないので、研究室に戻ってからはそれに集中しようと思っていたんですが、空調機が壊れてて妙にあったかい研究室にいると眠気に耐えられそうになかったので図書館に逃げることにしました。図書館では勉強半分昼寝半分ってところでしょうか。なんでこんなに眠いんだろう・・・。やっぱり6時間半睡眠じゃダメなんだろうかおれは・・・(ω・`  )
気分転換の気分転換で図書館を後にして今度は実習室へ。今日は随分人が多かったです。みんな雨のせいで帰りにくかったのかなぁ。どこかで見た顔を見つけたので話しかけてみたら学部の一年生でした。僕がTAを担当しているクラスの子です。レポートが近いのでそれをやっているんだそうな。成り行きで一時間ほど手を貸すことになりました。あのバグは一年生じゃ分からないと思いました。なんだあのscanf()は・・・。せっかくだから忘れないようにここに書き残していくとします。
まずは動かなかった方。

int a, b;
char c;
double d;

printf("input number > ");  scanf("%d", &a);
printf("input number > ");  scanf("%d", &b);
printf("input character > ");  scanf("%s", &c);

printf("a = %d\n", a);
printf("b = %d\n", b);  // b の値が何を入れていてもこの時点で 0 になっている 
printf("c = %c\n", c);

で、とりあえずまともに動くように直したのがこちら。

int a, b;
double d;  // d の宣言位置を c より前に持ってきただけ
char c;

printf("input number > ");  scanf("%d", &a);
printf("input number > ");  scanf("%d", &b);
printf("input character > ");  scanf("%s", &c);

printf("a = %d\n", a);
printf("b = %d\n", b);  // ちゃんと入力した値が表示される 
printf("c = %c\n", c);

たぶん char 型の変数に scanf("%s") 使ってるのがバグの原因だと思います。理由がはっきり分かっているわけではないんですが、たぶん scanf() でこういう使い方をすると、 c の領域だけではなくて b の領域も上書きしちゃうんじゃないかなぁ。詳しい方がいらしたら教えてもらいたいですm(_ _)m とりあえず明日の授業で先生に聞いてみようと思います。
図書館から実習室までずっと研究室のノートPCを鞄に入れっぱなしだったので、それを返しに帰りに研究室に寄りました。先生とM1の友達発見。でもだからといってどうというわけでもなく。今日はあんまり研究室にいなかったけど何してたの?みたいなことを聞かれてそれに適当に答えたくらいです。あとは挨拶だけかな。15分くらい勉強して帰宅しました。
っとそういえば図書館で本を借りました。返却期限は来月の14日までです。学校で本借りるのはちょっと久しぶりだけど、こんなに短かったかな?ちょうど20日間なんですね。

プログラミングC#言語解説 第3版

プログラミングC#言語解説 第3版

*1:ちなみにゴルフは何も関係ありません。