0
    int ch;
    do
    {
            ch = getchar();
            printf("ch = %d\n",ch);
    }while(ch != '\n' && ch != EOF);

この場合、入力1234の出力は次のようになります。

    ch = 49
    ch = 50
    ch = 51
    ch = 52
    ch = 10

しかし、このようにそれを与えると

    char chs[100] = {0};
    unsigned int u = 0;
    int sign = 1,k=0;
    if(scanf("%[- 0-9]",&chs[0])== 1)
    {
             int ch;
             do
             {
              ch = getchar();
              printf("ch =  %d\n",ch);
             }while(ch != '\n' && ch != EOF);

この場合、input=1234の出力は

    ch =10

なぜこれがここで起こっているのですか?誰か説明してもらえますか...出力が以前と同じにならないのはなぜですか??

scanfはここでどのように機能していますか?

4

1 に答える 1

6

scanfストリームからデータを読み取るための呼び出し。getchar後で読み取った文字を使用してストリームから再度読み取ろうとすると、scanfすでに消費されており、再度読み取られません。

scanfまた、フォーマット文字列の有効な値については、ドキュメントを参照してください。

于 2012-04-29T20:02:21.787 に答える