字符型就是整型的影像!
首先来看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;
}