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);

在这种情况下,输入 = 1234 的输出为

    ch =10

为什么会在这里发生???有人可以解释一下...为什么输出和以前不一样??

scanf 在这里到底是如何工作的?

4

1 回答 1

6

调用scanf从流中读取数据。当您稍后尝试使用已读取的字符再次从流中读取时,getchar这些字符scanf已被使用且不会再次读取。

此外,请参阅文档以scanf获取格式字符串的有效值。

于 2012-04-29T20:02:21.787 回答