2017-03-04 15 views
1
void coordinateInput(int in){ 
    int * input = (int *)malloc(in*(sizeof(int))); 
    for (int i = 0; i < in; i++){ 
     printf("Please enter the x coordinate for control point #%d: ", i); 
     scanf("%d\n",&input[i]); 
     printf("Please enter the y coordinate for control point #%d: ", i); 
     scanf("%d\n",&input[i+1]); 
    } 
} 

出力では、それは別の入力を要求ライン0の後に見ることができます:Screenshot of output私はユーザーから1つの入力を受けようとしていますが、何とか2つの入力を求めていますか?

は、私は1つの入力を取得したいが、私はいくつかの理由で二回入力を有してしまいます。最初のケースのみに当てはまります。

+1

呼び出し元コード(おそらく 'main()'関数を使用して[最小、*完全、および検証可能な例](http://stackoverflow.com/help/mcve)を投稿してください。 – MikeCAT

+1

'scanf()'の '%d 'の後の改行文字は、空白でない次の文字を待つことになり、予期しない動作につながる可能性があります。 (回答を投稿する前にMCVEを待っています) – MikeCAT

+0

@MikeCATありがとうございました – DigitalHero

答えて

1

scanfステートメントから '\ n'を削除してprintfに追加するように修正しました。

int * input = (int *)malloc(in*(sizeof(int))); 
for (int i = 0; i < in; i++){ 
printf("Please enter the x coordinate for control point #%d: ", i); 
scanf("%d",&input[i]); 

printf("\nPlease enter the y coordinate for control point #%d: ", i); 
scanf("%d",&input[i+1]); 
//[In output you can see after line 0 it asks for another input][1]} 
printf("%d - %d\n", input[i], input[i+1]); 
} 

コードはそのようなものでなければなりません。

関連する問題