2

だから私は、ユーザーから座標を取得することになっているこのコードを持っています:

#include <stdio.h>
#include <time.h>

int main() {
int number;
char letter;
int points = 3;
    while(points < 8){
        printf("give me first coordinate (letter)");
        scanf("%c",&letter);
        printf("give me second coordinate (number)");
        scanf("%d",&number);
    }
}

私の知る限り、これはユーザーから座標を取得し続ける必要がありますが、代わりに一度だけ取得してから、理由もなく scanf をスキップするように、本当に奇妙な方法でクラッシュします。ここに私の出力があります:

give me first coordinate (letter)a
give me second coordinate (number)1
give me first coordinate (letter)give me second coordinate (number)12
give me first coordinate (letter)give me second coordinate (number)df
give me first coordinate (letter)give me second coordinate (number)give me first coordinate (letter)give me second coordinate (number)sss

これは単純なコードであるため、私は本当に混乱しているように感じます。何が原因なのか、ちょっとした考えがありません。誰かいますか? (違いがあるとすれば、私のシステムはマウンテン ライオンです)

4

3 に答える 3

3
scanf(" %c",&ch);

これが機能する理由は、最初のスペースが標準入力をフラッシュし、ユーザーが文字を入力できるようにするためです。

/nこれは、または/t前に置く場合にも機能します%c

于 2014-06-26T19:10:48.610 に答える