蹲家宅宅 2023-07-30 20:11 采纳率: 52%
浏览 2
已结题

请问对于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的读入
    */
  • 写回答

2条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-07-30 22:13
    关注
    不知道你这个问题是否已经解决, 如果还没有解决的话:
    • 这篇博客: 用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;
      }
      
      

    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 8月17日
  • 已采纳回答 8月17日
  • 创建了问题 7月30日

悬赏问题

  • ¥50 关于#华为#的问题:华为HMS账号登录
  • ¥20 Html备忘录页面制作
  • ¥15 黄永刚的晶体塑性子程序中输入的材料参数里的晶体取向参数是什么形式的?
  • ¥20 数学建模来解决我这个问题
  • ¥15 计算机网络ip分片偏移量计算头部是-20还是-40呀
  • ¥15 stc15f2k60s2单片机关于流水灯,时钟,定时器,矩阵键盘等方面的综合问题
  • ¥15 YOLOv8已有一个初步的检测模型,想利用这个模型对新的图片进行自动标注,生成labellmg可以识别的数据,再手动修改。如何操作?
  • ¥30 NIRfast软件使用指导
  • ¥20 matlab仿真问题,求功率谱密度
  • ¥15 求micropython modbus-RTU 从机的代码或库?