| 网站首页 | 业界新闻 | 群组 | 人才 | 下载频道 | 博客 | 代码贴 | 编程论坛
共有 271 人关注过本帖
标题:字母输入找其位置时的回车处理问题
只看楼主 收藏
浅草没马蹄
Rank: 2
来 自:湖北
等 级:论坛游民
帖 子:12
专家分:18
注 册:2018-3-10
结帖率:0
  已结贴   问题点数:20  回复次数:4   
字母输入找其位置时的回车处理问题
程序代码:
#include<stdio.h>
//判定输入的字符是否为字母并返回其位置
int Myfunc1(char num)
{
    if(num>='a'&&num<='z')
    {
        //返回字母的位置
        return num-'a'+1;
    }
    else if(num>='A'&&num<='Z')
    {
        //返回字母的位置
        return num-'A'+1;
    }
    else
    {
        return -1;
    }
}
int main()
{
    //定义一个字符用来接收用户输入的字符
    char temp;
    //先输入一个字符
    printf("请输入字符\n");
    scanf("%c\n",&temp);
    //用来判定是否需要吃掉回车
    int num=0;
    while(temp!='\n')
    {
        if(num!=0)
        {
            getchar();
            //正常输入
            printf("请输入字符:\n");
            scanf("%c",&temp);
        }
        num++;
        //定义一个字符用来接收函数返回的值
        int b=Myfunc1(temp);
        //根据b的值输出结果
        if(b!=-1)
        {
            printf("是一个字母,字母的位置是:\n");
            printf("%d\n",b);
        }
        else if(temp=='\n')
        {}
        else
        {
            printf("不是一个字母。\n");
        }
    }
    return 0;
}



字母输入找其位置的问题,请教一下大佬如何处理那个回车,实现在输入\n前的连续输入
2018-03-14 15:25
grmmylbs
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:51
帖 子:1375
专家分:5742
注 册:2016-2-14
  得分:20 
scanf("%c\n",&temp)改成scanf("%c",&temp);
2018-03-14 15:29
浅草没马蹄
Rank: 2
来 自:湖北
等 级:论坛游民
帖 子:12
专家分:18
注 册:2018-3-10
  得分:0 
果然啊,大佬可以解释下是为什么吗?
2018-03-14 15:31
grmmylbs
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:51
帖 子:1375
专家分:5742
注 册:2016-2-14
  得分:0 
因为\n需要非空白或回车字符来结束输入,所以你需要连续输两次字符,而输了2次后,缓冲区就会存在一个字符和一个回车,你后面只用一个getchar();只吸收了字符,回车就自动跑到下一个scanf中了。所以你也可以用两个getchar();来吸收。
2018-03-14 16:34
浅草没马蹄
Rank: 2
来 自:湖北
等 级:论坛游民
帖 子:12
专家分:18
注 册:2018-3-10
  得分:0 
回复 4楼 grmmylbs
好的,谢谢了
2018-03-14 19:19







关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.123784 second(s), 9 queries.
Copyright©2004-2018, BCCN.NET, All Rights Reserved