(四)C语⾔中的字符类型
(四)C语⾔中的字符类型
C语⾔中的字符型数据分为字符和字符串数据两类。**字符数据是指由单引号括起来的单个字符,**如‘a’、‘2’、‘&’等;字符串数据是指由双引号括起来的⼀串字符序列,如“good”、“0132”、“a”等。
1、基本类型定义
类型说明符: char
2、字符型数据的存储与取值范围
字符型数据的取值范围为ASCII码字符集中的可打印字符。⼀个字符型数据的存储占1个字节,存储时实际上存储的是对应字符的ASCII码值(即⼀个整数值)。
ASCII编码(American Standard code for information interchage)美国信息交换标准代码:
ASCII 码使⽤指定的7 位或8 位⼆进制数组合来表⽰128 或256 种可能的字符。标准ASCII 码也叫基础ASCII码,使⽤7 位⼆进制数来表⽰所有的⼤写和⼩写字母,数字0 到9、标点符号, 以及在美式英语中使⽤的特殊控制字符。
其中:
0~31及127(共33个)是控制字符或通信专⽤字符(其余为可显⽰字符),如控制符:LF(换⾏)、CR(回车)、FF(换页)、DEL(删除)、BS(退格)、BEL(响铃)等;通信专⽤字符:SOH(⽂头)、EOT(⽂尾)、ACK(确认)等;ASCII值为8、9、10 和13 分别转换为退格、制表、换⾏和回车字符。它们并没有特定的图形显⽰,但会依不同的应⽤程序,⽽对⽂本显⽰有不同的影响。
32~126(共95个)是字符(32是空格),其中48-57为0到9⼗个阿拉伯数字。c语言char的用法
65-90为26个⼤写英⽂字母,97-122号为26个⼩写英⽂字母,其余为⼀些标点符号、运算符号等。
同时还要注意,在标准ASCII中,其最⾼位(b7)⽤作奇偶校验位。所谓奇偶校验,是指在代码传送过程中⽤来检验是否出现错误的⼀种⽅法,⼀般分奇校验和偶校验两种。奇校验规定:正确的代码⼀个字节中1的个数必须是奇数,若⾮奇数,则在最⾼位b7添1;偶校验规定:正确的代码⼀个字节中1的个数必须是偶数,若⾮偶数,则在最⾼位b7添1。
后128个称为扩展ASCII码。许多基于x86的系统都⽀持使⽤扩展(或"⾼")ASCII。扩展ASCII 码允许将每个字符的第8 位⽤于确定附加的128 个特殊符号字符、外来语字母和图形符号。
3、字符型数据的表⽰⽅法
字符型数据在计算机中存储的是字符的ASCII码值的⼆进制形式,⼀个字符数据的存储占⽤1个字节。**因为ASCII码在形式上就是0~255之间的整数,因此C语⾔中字符型数和整型数可以通⽤。**例如,字符’a’的ASCII码值⽤⼆进制表⽰是1100001,⽤⼗进制表⽰是97,字符‘a’的存储形式实际上就是⼀个整型数97,所以它可以直接与整型数进⾏运算,可以与整型变量相互赋值,也可以将字符型数据以字符或整数两种形式输出。以字符形式输出时,先将ASCII码值转换为相应的字符,然后再输出;以整数形式输出时,直接将ASCII码值 作为输出。
C语⾔在语法上共提供了三种字符类型,分别是char、signed char、unsigned char,⼆进制长度均为8位,值域分别是
-128-127、-128-127、0~255。若不指定字符变量的类型,则默认为signed char类型。因为字符型数据主要是⽤来处理字符的,故对它不能⽤long或short类型修饰符修饰。
字符数据:
⽤单引号括起来的单个字符数。如‘A’,‘%’,‘:’,‘9’等,⽽‘12’或‘abc’是不合法的字符。
字符串数据:
⽤双引号括起来的单个或⼀串字符数,如“good”、“0132”、“w1”、“a”等。注意,“a”是字符串⽽不是字
符数。
为了便于C程序判断字符串是否结束,系统对每个字符串数存储时都在末尾添加⼀个结束标志——ASCII码值为0的空操作符‘\0’,
它既不引起任何动作也不会显⽰输出,所以存出⼀个字符串的字节数应该是字符串的长度加1。
例题:
编写⼀个程序,当输⼊⼩写字母时,字母能⾃动转换为⼤写字母;当输⼊⼤写字母时,程序能⾃动转换为⼩写字母;当输⼊⾮字母时,不进⾏任何转换;当输⼊⾮字母“#”时,程序结束。
分析:
因为⼤写字母⽐其相对应的⼩写字母的ASCII码⼩32,所以如果变量c的值是⼤写字母(c>=‘A’&&c<=‘Z’),将其转化为⼩写字母的公式为c=c+32;如果变量c的值是⼤写字母(c>=‘a’&&c<=‘z’),将其转化为⼩写字母的公式为c=c-32。
源程序:
#include<stdio.h>
void main()
{
char c;
do
{
scanf("%c",&c);
if(c>='a'&&c<='z')
printf("%c",c-32);
else if(c>='A'&&c<='Z')
printf(''%c",c+32)
}while(c!='#')
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。