Q1: 以前、作ったプログラム(ソースコード)が見当たらない。
A1: フォルダ(ディレクトリ)への移動を忘れていないだろうか。
$ cd cprog [Enter] としてcprogフォルダへ移動
$ ls [Enter] で該当ファイル名を探す。
Q2: ホームページから貼り付けたプログラムをコンパイルするとエラーがでる。
A2-1: 余分な空白やゴミは入っていないだろうか。通常、半角の空白に問題はないが、
#include の前に入った空白は必ず取り除くこと。
また、目に見えないゴミが入ることもある。この場合、一度、空白を全て除いた後、
見本にしたがって空白を入れるとよい。
A2-2: 最後の行まできちんと貼り付けただろうか。
最後の }
を忘れてもエラーとなるので注意する。
A2-3: ブラウザを小さめにしてプログラムを貼り付けたのではないか。
本来、1行に書くべきプログラムが2行にわたっている場合がある。
この場合、ブラウザを画面の幅いっぱいにし、再貼り付けを行う。
または、2行を見本にしたがって1行に戻す。
Q3: 今作ったプログラムを実行しようとすると前に作ったプログラムが実行される。
A3: コンパイルし忘れてはいないだろうか。
$cc をし忘れると、前のプログラムの a.out
が実行される。
また、コンパイルエラーがでた場合は、新しい
a.out が作成されないので、古い a.out が実行される。
Q4: 計算結果が表示されない。
A4: まだ、入力待ちの状態ではないだろうか。
scanf
で指定した変数分だけ入力を行わないと次の処理に進まない。
Q5: コンパイルがうまくいったのに、実行結果がおかしい。
A5: コンピュータは、プログラムで指定した通りに動く。
文法にミスがなくともプログラムが正常(期待した通り)であるとは限らない。
Q6: ¥(円マーク)が入力できない。\(バックスラッシュ)が表示される。
A6: ¥(円マーク)は日本独自のもので、米国等ではこの文字の代わりに\(バックスラッシュ)が割り当てられている。
(ただし、¥と\が半角文字の場合)
C言語においては ¥ = \
と考え、そのどちらが表示されていても問題はない。
ちなみに、よく用いられる printf("\n");
の¥n
とは、この¥nのところで改行することを意味する。
Q7: プログラムがとまらなくなった(とまったままになった)。
A7: 入力待ちの状態でなければ、CTRL+C
(CTRLキーとCキーを同時に押す)でプログラムを停止させる。
[for]文などの繰り返し処理が無限ループ(あるいはかなりの回数のループ)に陥った可能性がある。
Q8
: 条件判断で、5.0≦a≦10.0を判断したいのだが、if (5.0<=a<=10.0)
{ } と書くとコンパイルはうまくいくの
に正しく動作しない。
A8: if ((5.0<=a) &&
(a<= 10.0)) {文}などと書く必要がある。コンパイルがうまくいく理由は、(5.0<=a<=10.0)
が
文法上に間違いが無いためで、この場合aの値にかかわらず
{ 文 } 内が実行される。
(興味のある者はどうなっているのかCの文法解説書などを参考にして解読してみるとよい。)
|