1

私は2つのプログラムを書きました。最初のものでは、キーボードから文字を取得するためにgetcharを使用していません。この場合、コンパイルでは2番目のscanfが完全に欠落しています。したがって、これを克服するために、getcharを使用しました。この場合、私は正常に入力を行うことができますが、比較は行われていません。私は「d」として入力を与えましたが、「d」の出力は「さようなら」のみです。

#include<stdio.h>
main(){
    char c,f;
    printf("e");
    scanf("%c",&c);
    printf("one more");
    scanf("%c",&f);
    if(c=='d'&&f=='d')
        printf("hi");
    else
        printf("bye");

}

getchar付き

#include<stdio.h>
 main(){
    char c,f;
    printf("e");
    scanf("%c",&c);
    printf("one more");
    scanf("%c",&f);
    getchar();
    if(c=='d'&&f=='d')
        printf("hi");
    else
        printf("bye");

}
4

1 に答える 1

2

によって消費されないため、改行文字は標準入力に残りますscanf("%c")。これは、2 番目の scanf() が次の入力ではなく、改行文字を読み取ることを意味します。に変更するscanf(" %c")と、先頭の空白がスキップされます。

于 2013-01-27T20:02:29.730 に答える