C语言----字符(基础篇九)
最近废话不多继续提升。
字符常量
‘a’和’9’都是字符常量
注意:’9’和9有很大区别
※单引号的空格’□’也是一个字符常量,但不能写成连续两个单引号’’
字符变量
char c; /*定义一个字符变量*/
※字符变量在内存中占一个字节,它只能存放ASCII(美国信息交换标准代码)码。
※标准的ASCII码只有127个字符(见附录1),电子设备统一了标准,各种电报机,打印机,电脑就可参照标准大规模生产,还可以通过ASCII码交换数据。
※我们在用键盘输入数据时,电脑会从ASCII对照表中读取相应的ASCII码装入内存,而不是真实的字符。同理,想要显示信息在屏幕上时,也要使用参照表将ASCII码转换成字符,再显示在屏幕上。
※大家看到,在 ASCII码表中,每个字符都有序号,要记住我们常用的字符对应的序号也不难,方法如下:
‘0’~’9’对应的整数为48~57
‘A’~’Z’对应的整数为65~90
‘a’~’z’ 对应的整数为97~122
※大写字母与小写字母的差值为32,于是得出小写字母减32的值刚好是对应的大写字母。
字符类型的输入输出
printf和scanf 两个函数的意思是:printf => print + format 。 sacnf => scan + format .
格式控制符为%c
如:
char c;
scanf(“%c”,&c);
printf(“%c”,c);
putchar和getchar
如:
char c;
c=getchar();
putchar(c);
※无论是字符还是字符串常量,引号在屏幕上输入输出都不会显示。在编程时一定要加上,以区分其它类型的常量。
字符运算
※C语言规定,所有的字符运算都是转成ASCII码的整数运算。
如:
‘B’-‘A’ 相当于66-65=1
‘a’+1相当于97+1=98=’b’
‘9’+’9’ 相当于57+57=114=’r’
※既然字符型数据和整型数据可这么方便的转换,那么字符型数据也经常使用%d输出,用来得到字符的ASCII码序号。
※不可以对字符串进行类似的运算,如”b”-“a”是错误的,字符串运算必须通过函数,将在后面介绍
// 9 _1 字符运算 #include <stdio.h> void main() { int i1, i2; char c1, c2; //字符 + 整型 赋值给整型 i1 = 'a' + 1; i2 = 'a' - 'b'; printf("i1 = %d\n i2 = %d\n", i1, i2); //整型 赋值给字符型 c1 = 97; c2 = 48; printf("c1=%c\nc2=%c\n", c1, c2); printf("整型输出字符型c1=%d\nc2=%d\n", c1, c2); printf("字符型输出整型i1=%c\ni2=%c\n", i1, i2); }
用scanf输入字符
※每个%c只接收一个字符
scanf(“%c%c%c”,&a,&b,&c);
如果输入
uvwxyz(回车)
系统会自动一个一个地截取,使a=’u’,b=’v’,c=’w’
※在字符型变量上使用列宽控制时,第一个变量只会读取第一个字符,第二个变量会跳跃列宽后再读取一个字符
scanf(“%3c%3c”,&c1,&c2);
如果输入
abcde(回车)
c1为a,c2为d 因为是3个字符列宽,所以c2为d
※空格和回车都作为字符
scanf(“%c%c%c”,&a,&b,&c);
如果输入
x□y□z □ 占位符代表回车和空格
系统会自动使a=’x’,b=’□’,c=’y’,最右边的两个字符被丢弃
如果输入
x(回车)
yz
a、c与前面相同,但是b会赋于一个回车。也就是ASCII码的10。