C语言 数据类型 字符型

字符型就是整型的影像!

首先来看ASCII码字符对照表:

	printf("影像方式:%c 编码方式:%hhd\n", 'A', 'A');
	printf("影像方式:%c 编码方式:%hhd\n", 66, 'B');

 

字符值的设置方式: 

	//字符值的设置方式
	char a = 'a';//影像设置方式
	char b = 97;//十进制编码
	char c = '\141';//八进制编码 \开头+8进制数
	char d = '\x61';//十六进制 编码 \x开头
	printf("%c %c %c %c\n", a, b, c, d);

 由此可以看出,无论用十进制、八进制还是十六进制都可以用来表示字符。

十进制不能做连续编码,但是八进制跟十六进制可以
也就是说,''可以连续设置字符
有些时候可以用来加密

	printf("ABCD\n");
	printf("65666768\n");
	printf("\101\102\103\104\n");
	printf("\x41\x42\x43\x44\n");

转义字符的设置: 

printf("\\ \' \" \n");

 \n==\12==\xa都为换行的意思 \t缩格制表符 \\就是\ \' \"

打印10个字符:

 

	printf("输入10个字符:");
	char ch;
	for (int i=0;i<10;i++)
	{
		scanf_s("%c", &ch,1);//1是为了注明参数 如果不用_s则不用加1
		//注意:空格也算字符 原因:%c会读取空格
		printf("%c", ch);
	}

要注意的是,在输入时空格也算字符、

字符种类的判断: 

	ch = '8';
	if (ch>='0' && ch<='9')//数据区间
	{
		printf("\n数字字符");
	}
	else if (ch >= 'A' && ch <= 'Z')//数据区间
	{
		printf("大写字母字符");
	}
	else if (ch >= 'a' && ch <= 'z')//数据区间
	{
		printf("小写字母字符");
	}
	//else if (ch >= 'a' && ch <= 'z' || ch >= 'A' && ch <= 'Z')//数据区间
	//{
	//	printf("字母字符");
	//}
	else printf("其他字符");

转换

大小写字母互转:+ -32

	ch = 'A';
	ch += 32;
	printf("\n%c\n", ch);

数字与数字字符互转:+ -‘0’

	//数字与数字字符互转  + - 字符'0'
	int num = 8;
	num += '0';
	printf("%c %d\n", num, num);

char的升级版wchar_t:

	//--------------------------------//
	wchar_t zi = L'张';//双字节编码   L双字节字符前缀

双字节编码   L是双字节字符前缀

完整代码:

#include<stdio.h>
int main()
{
	char cValue='A';
	//其实字符就是整型的影像
	printf("影像方式:%c 编码方式:%hhd\n", 'A', 'A');
	printf("影像方式:%c 编码方式:%hhd\n", 66, 'B');
	//字符值的设置方式
	char a = 'a';//影像设置方式
	char b = 97;//十进制编码
	char c = '\141';//八进制编码 \开头+8进制数
	char d = '\x61';//十六进制 编码 \x开头
	printf("%c %c %c %c\n", a, b, c, d);
	printf("ABCD\n");
	printf("65666768\n");
	printf("\101\102\103\104\n");
	printf("\x41\x42\x43\x44\n");
	//十进制不能做连续编码,但是八进制跟十六进制可以
	//也就是说,''可以连续设置字符
	//有些时候可以用来加密
	//转义字符的设置:\n==\12==\xa都为换行的意思 \t缩格制表符 \\就是\ \' \"
	printf("\\ \' \" \n");

	/*从键盘输入10个char型数据。统计数字字符、字母字符、其它字符的占比分别是多少。*/
	printf("输入10个字符:");
	char ch;
	for (int i=0;i<10;i++)
	{
		scanf_s("%c", &ch,1);//1是为了注明参数 如果不用_s则不用加1
		//注意:空格也算字符 原因:%c会读取空格
		printf("%c", ch);
	}
	//利用 编码规律 实现
	//1.字符种类判断
	ch = '8';
	if (ch>='0' && ch<='9')//数据区间
	{
		printf("\n数字字符");
	}
	else if (ch >= 'A' && ch <= 'Z')//数据区间
	{
		printf("大写字母字符");
	}
	else if (ch >= 'a' && ch <= 'z')//数据区间
	{
		printf("小写字母字符");
	}
	//else if (ch >= 'a' && ch <= 'z' || ch >= 'A' && ch <= 'Z')//数据区间
	//{
	//	printf("字母字符");
	//}
	else printf("其他字符");
	//2.转换: 大小写字母互转    
	ch = 'A';
	ch += 32;
	printf("\n%c\n", ch);
	//数字与数字字符互转  + - 字符'0'
	int num = 8;
	num += '0';
	printf("%c %d\n", num, num);
	//--------------------------------//
	wchar_t zi = L'张';//双字节编码   L双字节字符前缀
	return 0;
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员懒羊羊

多多支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值