2016-06-12 11 views
-2

私はユーザーからの入力番号を受け入れ、それを表示する簡単なCプログラムを書いています。以前は私がCプログラムを書いていたからです。 :昨日Cプログラミングで正しい入力を得ることができません

#include<stdio.h> 
#include<stdlib.h> 
int main(void) 
{ 
    int a; 
    printf("Enter a number"); 
    scanf("%d",&a); 
    printf("Display number%d",&a); 
} 

まで、私はそれは一見ランダムな値ではなく、私はあまりにも、他ではちょうどこのプログラムではありません入力されたものを表示する入力を受け付けるプログラムを実行するたびに、ここ O/Pであります番号を入力してください:12 表示番号:2752300 処理が返されました。7(0X7)実行時間:1.880秒 続行するには、いずれかのキーを押してください

この問題の原因となっているが、私はDEV C/C++、Turbo C/C++のような別のIDEを使って試してみましたとコードブロックが表示されますが、エラーはTurbo C/C++以外のすべてで同じです。たとえば、入力された番号を表示します。たとえば、入力が12の場合、-12と表示されます。

+1

テキストの画像を投稿しないでください!それらの数行をコピー/ペーストするのではなく、スナップショットを作成する方が本当に簡単でしたか? 'printf'の引数型を見てみましょう!コンパイラの警告は楽しいものではありませんが、真剣に取り組まなければなりません。それらを有効にし、注意を払う。 – Olaf

+0

コンソールウィンドウでテキストを選択してクリップボードにコピーすることは可能ですか?イメージは、問題を説明する他の方法がない場合にのみ使用してください。画像の不必要な使用は、さまざまな理由で不適切です。あなたのコードの画像を[このメタ投稿](http://meta.stackoverflow.com/a/285557/62576)に掲載しない理由のリストがあります。これらの理由の大部分は、コンソールへのテキスト出力に関する不要なイメージにも適用されます。いくつか考慮してください。 –

+0

@KenWhite残念ですが、私はそれを覚えています。 –

答えて

6

問題はあなたのprintステートメントにあります。値ではなくaのアドレスを表示しています。

printf("%d",a); 

それはそのアドレスを必要としないので、aに書き込もうとしていない:printfため%d書式指定子がint、ないint *を期待print("%d",a);

+0

を編集しました。それは新年の間違いでしたので、私は一日中それを修正して過ごしました:P –

+0

私たちのほとんどはそこにいました – DrC

2

を使用してください。

あなたは(GCC用-Wall -Wextra)上げに警告レベルでコンパイルした場合、それはあなたにこのことを教えてくれます:そう、変数自体を変更しようとしている場合

format ‘%d’ expects type ‘int’, but argument 2 has type ‘int *’ 
0

scanf関数は、変数へのポインタを必要とします我々はポインタを得るためにアドレス演算子を使用する。

scanf()がパラメータとして "%d"を受け取った後、整数を読み込み、引数リストの次の変数に格納する必要があることがわかります。

#include<stdio.h> 
    #include<stdlib.h> 

    int main(void) 
    { 
    int a = 0; 
    printf("Enter a number: "); 
    scanf ("%d" ,&a); 
    printf ("%d \n ",a); 
return 0; 
} 
関連する問題