注册 登录
编程论坛 C语言论坛

while循环获取输入字符出错,是不是getchar有问题?

niuniuchiniu 发布于 2019-08-10 18:12, 2529 次点击
大神们,如图!想要获取输入字符的大小写对应模式及其他字符,如数字,空格,代码与视频上的代码一样,输出结果大不一样,不知道哪里出问题,求教,谢谢。

#include <stdio.h>
#include <Windows.h>
#include <stdlib.h>
#define _CRT_SECURE_NO_WARNINGS

void judge(char data)
{
    while (1)
    {
        
        getchar();//
        
        if (data >= 'A'&& data <= 'Z')//输入为大写的情况
        {
            
            printf("%c\n", data += 32);
        }        
        else if (data >= 97 && data <= 122)//输入为小写字母
        {
            printf("%c\n", data -= 32);
        }
        else if (data >= 48 && data <= 57)//数字原样输出。
        {
            printf("%c\n", data);
        }
        else if (data == 32)//空格
        {
            printf("this is a space key \n");
        }
        else
        {
            printf("Others\n");
        }            
        
    }
   
   
}
int main()
{

    char data = getchar();
   
    judge(data);
   
    system("pause");
   


   
}
只有本站会员才能查看附件,请 登录

2 回复
#2
H_M2019-08-13 00:23
回复 楼主 niuniuchiniu
打破零回复,也只需要一个回复。
一些问题在下面代码里面,还有疑问可以问,希望能够帮到你。
程序代码:
#include <stdio.h>
#include <Windows.h>
#include <stdlib.h>
#define _CRT_SECURE_NO_WARNINGS

void judge()
{
    while (1)
    {
        int data;   
        data = getchar(); //从主函数传值过来,data变化不了
        if (data >= 'A'&& data <= 'Z')//输入为大写的情况
        {
            printf("%c\n", data += 32);
        }        
        else if (data >= 97 && data <= 122)//输入为小写字母
        {
            printf("%c\n", data -= 32);
        }
        else if (data >= 48 && data <= 57)//数字原样输出。
        {
            printf("%c\n", data);
        }
        else if (data == 32)//空格
        {
            printf("this is a space key \n");
        }
        else
        {
            printf("Others\n");
        }
        getchar();    //获取 回车    ,也就是'\n'字符。
    }
}
int main()
{   
    judge();
    system("pause");
}

只有本站会员才能查看附件,请 登录


[此贴子已经被作者于2019-8-13 00:32编辑过]

#3
niuniuchiniu2019-08-16 00:11
谢谢,好像看懂了
1