(C语言)一直接收键盘字符, 如果是小写字符就输出对应的大写字符, 如果接收的是大写字符,就输出对应的小写字符, 如果是数字不输出。

一直接收键盘字符, 如果是小写字符就输出对应的大写字符, 如果接收的是大写字符,就输出对应的小写字符, 如果是数字不输出。

编译环境VS2017

编写一个程序,可以一直接收键盘字符,
如果是小写字符就输出对应的大写字符,
如果接收的是大写字符,就输出对应的小写字符,
如果是数字不输出。

char word[1] = "0";

题目中从键盘接收字符,可以定义一个字符类型,这里定义只有一个元素的字符数组是因为考虑到要进行大小写转换,调用函数strlwr()和strupr()这两个函数。
strlwr()函数作用是将字符串中的大写字母转换为小写
strupr()函数作用是将字符串中的小写字母转换为大写
strlwr()和strupr()是对字符串的操作函数,函数参数要为char*类型

因为程序要可以一直从键盘接受字符进行转换,这是一个重复的操作,可以用循环来实现
这里我们用while(1)来实现无限循环

while(1) {
}

getch():所在头文件:conio.h
函数用途:从控制台读取一个字符,但不显示在屏幕上
当输入一个字符时getch()函数会直接读取,然后代码往下执行,避免了一次输入多个字符
getchar()函数
功 能: 从stdin流中读字符
用 法: int getchar(void);
需要注意的是:getchar有一个int型的返回值.当程序调用getchar时.程序就等着用户按键.用户输入的字符被存放在键盘缓冲区中.直到用户按回车为止(回车字符也放在缓冲区中).getchar函数的返回值是用户输入的第一个字符的ASCII码,如出错返回-1,且将用户输入的字符回显到屏幕.如用户在按回车之前输入了不止一个字符,其他字符会保留在键盘缓存区中,等待后续getchar调用读取.也就是说,后续的getchar调用不会等待用户按键,而直接读取缓冲区中的字符,直到缓冲区中的字符读完为后,才等待用户按键.
getch()与getchar()基本功能相同,差别是getch直接从键盘获取键值,不等待用户按回车,只要用户按一个键,getch就立刻返回, getch返回值是用户输入的ASCII码,出错返回-1.输入的字符不会回显在屏幕上。

getchar()如果在此问题中会出现如下状况:

word[0]=getchar();

(C语言)一直接收键盘字符, 如果是小写字符就输出对应的大写字符, 如果接收的是大写字符,就输出对应的小写字符, 如果是数字不输出。

所以我们可以用getch()代替getchar(),具体实现如下:

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<conio.h>
void main() {
	printf("请输入一个英文字符\n");
	while (1) {
		char word[1] = "0";
		word[0]=_getch();
		if (word[0] > 47 && word[0] < 58) {
			printf("%c\n", word[0]);
			printf("请输入一个英文字符\n");
			continue;
		}
		else if (word[0] > 64 && word[0] < 91)//大写字母
		{
			printf("%c\n", word[0]);
			_strlwr(word);
			printf("转化后字符为%c\n", word[0]);
			continue;
		}
		else if (word[0] > 96 && word[0] < 123)//小写字母
		{
			printf("%c\n", word[0]);
			 _strupr(word);
			printf("转化后字符为%c\n", word[0]);
			continue;
		}
	}
	system("pause");
}

(C语言)一直接收键盘字符, 如果是小写字符就输出对应的大写字符, 如果接收的是大写字符,就输出对应的小写字符, 如果是数字不输出。