コンピュータ基礎演習のページ

他人のことを考えてコードを書く

プログラムは書ければいい、実行できればいいではダメです。例えばプログラムを実行してみて、

...

となにも文字や指示が出てこなければ、正常に動作しているかすらわかりません。
例えば0からnまでの和を求めるプログラムで、 自然数 n を入力してほしいなら、
------------------------------
0からnまでの和を求めます
自然数nを入力してください ^o^
n = _
------------------------------
くらいの説明をいれましょう。

またコードの中にも適宜コメントを挟んで、誰が見てもわかり易いものを作るように心がけましょう。
もちろん適切な変数名、インデント、関数化、マクロ定義などなど、簡潔なコードを作れるようになりましょう。
このように癖を付けると、コンパイルエラーや実行中に何かバグがあった場合の原因を探すときにも
(というかそんなときにこそ)助かります。
いくら自分が書いても、その場の思い付きで書いていると後から見てわからなくなりますよ(経験談)。

scanf()を軽々使わないように

標準入力(stdin;通常はコマンドライン)から文字列を読み込むことができる便利な関数"scanf()"ですが、
意図した型以外の文字が入力されるとトタンに役たたずになります。
(ためしに全然違う型を入力してみてください。たいがいバグがでます)
そこで、fgets()とsscanf()を組み合わせた方法がお薦めです。

まず、fgets()でコマンドラインから文字列を1行文まるまる読み込みます。
次に読み込んだ文字列をsscanf()で好きな型(int,doubleなど)に変換します。
このとき変換が失敗すると、sscanf()の返り値で0を返します(正確にはすこし違いますが)。
これを利用してエラー処理をした方がバグがでにくくなります。

下のページにも、課題1のページにも詳しく書いてあったので参考にしてみてください。
scanf,fsanfは使わずfgets,sscanfのペアを使う:"www.6809.net/tenk/html/cgokai/scanf.htm"

壁を乗り越えろ(コンパイルの-Wallオプション)

コマンドラインでコンパイルすると、おそらく多くの人が
gcc -o test test.c
としてると思いますが、
gcc -o test test.c -Wall
のように"-Wall"を付けると細かいところまで警告を出してくれます。
提出プログラムはこのオプションを付けても警告がでないようにして提出してください。

リンク