getchar的输出

getchar的输出,c,C,在这种情况下,输入1234的输出为 int ch; do { ch = getchar(); printf("ch = %d\n",ch); }while(ch != '\n' && ch != EOF); 但是像这样给予 ch = 49 ch = 50 ch = 51 ch = 52 ch = 10 在这种情况下,输入=1234的输出为 char

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

    int ch;
    do
    {
            ch = getchar();
            printf("ch = %d\n",ch);
    }while(ch != '\n' && ch != EOF);
但是像这样给予

    ch = 49
    ch = 50
    ch = 51
    ch = 52
    ch = 10
在这种情况下,输入=1234的输出为

    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);
为什么会发生在这里??? 谁能解释一下。。。为什么输出与以前不一样


scanf在这里的工作情况如何?

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


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

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


此外,有关格式字符串的有效值,请参阅文档。

您在对scanf的调用中已经使用了1234个字符,所以剩下的是行尾字符(LF=10)您在对scanf的调用中已经使用了1234个字符,所以剩下的是行尾字符(LF=10),scanf可能正在抢占一整条线。此代码已损坏,请不要同时使用scanf和getchar。此外,scanf可能会占用整行代码。此代码已损坏,请不要同时使用scanf和getchar。
    ch =10