getchar的输出

时间:2012-04-29 19:58:41

标签: c

    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如何在这里工作?

1 个答案:

答案 0 :(得分:6)

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

另外,请参阅scanf的文档,了解格式字符串的有效值。