首页 理论教育C语言程序设计第2版:字符型数据

C语言程序设计第2版:字符型数据

【摘要】:表2.3转义字符表2.3中’\ddd’表示将1~3位数转换成ASCII码值所对应的符号。例2.3转义字符的使用。图2.2例2.3输出结果2.字符变量字符变量用来存放字符常量,并且只能放一个字符。字符变量的使用方式如下:例2.4向字符变量赋值。例2.5字符输入输出函数的使用这个程序运行过程中,从键盘输入任意两个字符,并把第一个字符赋给变量b,第二个字符赋给变量c,最后输出变量a,b,c的值。

1.字符常量

(1)C语言的字符常量是用单引号括起来的一个字符,如’a’,’D’,’$’,’@’。大写字母与小写字母是不同的字符常量,如’a’和’A’是不同的字符。请注意,单引号是定界符,不占存储空间。

(2)转义字符。C语言中还有一些特殊的字符常量,它们是以“\”开头的字符序列。这是一种“控制字符”,不能显示在屏幕上。例如,在前面的程序中用到的’\n’代表“换行”意思。

常用的以“\”开头的转义字符见表2.3。

表2.3 转义字符

表2.3中’\ddd’表示将1~3位数转换成ASCII码值所对应的符号。例如,’\101’代表ASCII码(十进制数)为65的字符’A’,’\012’代表换行,’\0’或’\000’代表ASCII码为0的控制符,即“空操作”。’\xhh’中“x”代表十六进制,hh代表十六进制数。例如’\x61’代表“a”,’\x6a’代表字母“j”。

例2.3 转义字符的使用。

输出结果如图2.2所示。

图2.2 例2.3输出结果

2.字符变量

字符变量用来存放字符常量,并且只能放一个字符。一个字符变量在内存中占1个字节。

字符变量的定义形式如下:

char c1,c2;

上述语句定义c1和c2为字符型变量。字符变量的使用方式如下:

例2.4 向字符变量赋值

注意:将一个字符常量放到一个字符变量中,实际上并不是把该字符本身放到内存单元中,而是将该字符相应的ASCII码值放到存储单元。将一个数值赋值给一个字符常量,并以字符型输出时,也将通过ASCII码转换为对应的字符输出。但是,由于字符数据只占1个字节,它只能存放0~255的整数。

在C语言中,允许对整型变量赋以字符值,也允许对字符变量赋以整型值;允许把字符变量按整型值输出,也允许把整型变量按字符输出。因此,字符数据可以加减运算,只是运算形式是通过ASCII码值进行加减来实现。

3.字符数据的输入输出

(1)字符输入函数getchar()。

getchar()函数的作用是从指定的输入设备输入一个字符,其格式为:

getchar();

例如:(www.chuimin.cn)

char c;

c=getchar(); /*从键盘读入一个字符,并且赋给变量c*/

这里的getchar()和scanf()函数有着相似的作用。

(2)字符输出函数putchar()。

putchar()函数的作用是向终端输出一个字符,其格式为:

putchar(c);

其中c可以是字符型变量也可以是整型变量。

例2.5 字符输入输出函数的使用

这个程序运行过程中,从键盘输入任意两个字符,并把第一个字符赋给变量b,第二个字符赋给变量c,最后输出变量a,b,c的值。

4.字符串

(1)字符串常量。

前文讲的字符常量是由一对单引号括起来的单个字符。而字符串常量则是一对双引号括号起来的字符序列。例如:“Welcome to China”“How are you”“zhangshan”这些都是字符串常量。

字符常量和字符串常量不仅在单引号和双引号有区别,还有更重要的是,字符串常量还包含一个“字符串结束标志”,即“\0”。每一个字符串的结尾都有一个“字符串结束标志”。例如,一个字符串“zhangshan”,实际在内存中存储如图2.3所示。

图2.3 字符串在内存中存储状态

它的长度不是9个字符,而是10个字符,最后一个字符为“\0”,“\0”不需要我们输入,而是系统内部默认添加的。因此,字符串“a”实际上就是’a’和’\0’两个字符组成。

在C语言中没有专门的字符串变量,如果想将一个字符串存放在变量中,必须使用字符数组。这将在以后的章节中介绍。

(2)字符串的输出。

前文讲到字符数据的输出格式为“%c”,而字符串的输出格式符为“%s”。字符串的格式化输出形式包括:

①%s。例如:printf(“%s”,“program”),输出结果为:program 。

②%ms。输出的字符串占m列。如果字符串本身长度大于m,则突破m的限制,将字符串全部输出;若字符串长度小于m,则向左补齐空格。例如:printf(“%8s”,“program”),输出结果为: program。

③%-ms。如果字符串长度小于m,则在m列范围内,字符串向左对齐输出,向右补齐空格。例如:printf(“%-8s”,“program”);输出结果为:program 。

④%m.ns。输出的字符串占m列,但只取字符串中从左到右n个字符。这n个字符向右对齐输出,向左补空格。如果n>m,则m自动取n值,保证n个字符正常输出。例如:printf(“%7.3s”,“program”),输出结果为: pro。

⑤%-m.ns。这与上一格式的区别在于n个字符输出在m列范围的左侧,右补空格。例如:printf(“%-7.3s”,“program”),输出结果为:pro 。