请问对于getchar如何修改,避免空格与Tab的干扰,以下代码如何解释

请问对于getchar如何修改,避免空格与Tab的干扰,以下代码如何解释


#include<stdio.h>
int main(){
    int n = 0;
    printf("请输入一串数字:");
    scanf("%d",&n);
    getchar();
    while ((getchar()) != '\n')
    {
        printf("");
    }
    printf("请输入一个字符作为a的值:");
    char a = getchar();
    printf("##%c##\n",a);
}
    /*
    对于getchar,Tab或空格会结束上一次输出
    开始getchar的读入
    */
不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这篇博客: 用getchar()将用户输入的字符串中代表数字的字符转换为整型数值中的 用getchar()将用户输入的字符串中代表数字的字符转换为整型数值 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:

    要求:打印转换结果,只打印第一组数字;

    #include<stdio.h>
       int main()
       {
               int ch;
               int num=0;
               printf("请输入待转换的字符串:");
               do
               {
                    ch=getchar();//得到的字符的进制,所以‘1、2、3’等数字字符的十进制分别为‘49,50、51’等 
    //                printf("%d\n",ch);
                    if(ch>='0'&&ch<='9')
                    {
                         num=num*10+(ch-'0');//0字符的十进制位48 
                    }
                    else//遇到小数点或空格等其他符号将数字时 
                    {
                        if(num){//已经有一组数字了,退出循环 
                            break;
                        }
                    }
                }
              while(ch!='\n');
              printf("结果是:%d",num);
              return 0;
      }
    
    
    #include<stdio.h>
    int main()
    {
            int ch;
            int num;
            printf("请输入待转换的字符:");
            while((ch=getchar())!='\n')
            {
                    if(ch>='0'&&ch<='9')
                    {
                    num=num*10+ch-'0';
                    }
                    else
                    {
                            if(num)
                            {
                            break;
                            }
                    }
            }
            printf("结果是:%d",num);
            return 0;
    }
    
    

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

不知道你说的干扰是什么意思,是忽略的意思么?
char ch;
while (1)
{
ch = getchar();
if (ch == '\t' || ch == ' ') continue;
if (ch == '\n') break;
...
}