0

私は、C スタイルのコード (私が慣れ親しんでいる C++ に対して) に慣れるための簡単なプログラムになると思っていたものに取り組んでおり、障害にぶつかっています。

を使用して配列にメモリを割り当てましcallocた。ユーザーに数字を入力してもらい、その数字を配列に入れます (これは、配列が完全に取り込まれるまで繰り返されます)。配列は作成されたようですが、私のコードは配列に書き込んでいません。プログラムは、実行時に入力を受け取り、その入力を一時変数 q (デバッグ目的で使用) に格納しますが、その一時変数の値を配列に書き込みません。

これは、私の問題を抱えていると思われるコードのスニペットです。

//e is the size of array as indicated by user
values = (double *)calloc(e , sizeof(double));
double q = 0; // holds input just to make sure it works
for (int i = 0; i < e; i++)
{
    printf("Please enter value %d: ",i+1);
    scanf("%d", &q);
    printf("%d", q); // confirms q = "input"
    values[i] = q; //This isn't happening for me
} 

なぜvalues[i]が q に等しくならないのかについて、誰かが私の誤りを訂正して (そして理想的には説明して) いただければ、本当にありがたいです。

4

1 に答える 1

2

%d書式指定子は s 用ですint。for doublesはscanf や printf と一緒に使用ます%lf%f%lf

scanf("%lf", &q);
printf("%f", q); // confirms q = "input"
于 2013-07-14T05:21:29.273 に答える