C言語のscanf()%のCの質問は、区切り文字を読み込み、

[CYの先生は間違って言った](すべての空白文字を含む)なしデフォルトの区切り文字:主に「%cの」のための

I.

    char a,b;
    scanf("%c%c",&a,&b);
    printf("%c%c",a,b);

何の区切り文字入力ではありません

シナリオ2

    char a,b;
    scanf("%c %c",&a,&b);
    printf("%c%c",a,b);

特別:長いscanfの間のような()文字%のC、任意の空白文字(および非数)の、入力は、現時点での状況と同様のセパレータとして使用されるような任意の空白文字の出現は「%D%D」{あるの、読んでインテリジェントに「本物」の文字を}識別- しかし!最初の文字の新ラウンドは、キャリッジリターンであり続けるだろう

要約すると、2の文字入力よりよく利用する複数のを読んだ後

  • 余分な文字化けをバッファリングするためのアプローチ

(1)クリアバッファ - 名付けたにfflush(STDIN)関数のバッファを空にするために使用することができます。

while(scanf("%c%c",&a,&b)!=EOF)  
    {  
        printf("a=%c,b=%c\n",a,b);  
        fflush(stdin);  
        printf("Input the value of a and b:");  
    }  

すなわち:白文字の前に空の一時バッファを誤読しています。
(2)データバッファ読み出しにより誘導される誤差(間接的な洗浄バッファ) - GETCHAR()または取得( )

GETCHARため():最初の文字バッファ(EOF)を読んで、関数は、文字(EOF == - 1)の値を返す(整数変数に戻すことは、それに対応するASCIIコードである場合)は、兄弟を拡張しました関数のputchar():のputchar(CH / INT) - パラメータCH / INT(ASCIIコード)に、この機能の出力端子char値に対応する
ためには、()を取得:文字列を取得します(読み取りラインのもの)

公開された10元の記事 ウォンの賞賛0 ビュー112

おすすめ

転載: blog.csdn.net/weixin_45076393/article/details/104466147