蹲家宅宅 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日

悬赏问题

  • ¥15 VMBox虚拟机无法访问
  • ¥15 skd显示找不到头文件
  • ¥15 机器视觉中图片中长度与真实长度的关系
  • ¥15 fastreport table 怎么只让每页的最下面和最顶部有横线
  • ¥15 R语言卸载之后无法重装,显示电脑存在下载某些较大二进制文件行为,怎么办
  • ¥15 java 的protected权限 ,问题在注释里
  • ¥15 这个是哪里有问题啊?
  • ¥15 关于#vue.js#的问题:修改用户信息功能图片无法回显,数据库中只存了一张图片(相关搜索:字符串)
  • ¥15 texstudio的问题,
  • ¥15 spaceclaim模型变灰色