第6章 字符型数据
6.1 字符型常量
6.1.1 字符常量
C语言中,一个字符常量代表ASCⅡ字符集中的一个字符,在程序中用单引号把一个字符括起来作为字符常量。例如,作为字符常量的小写字母a,在程序中写成′a′,以便和标识符a区别开。因此,′A′、′C′、′t′、′! ′、′? ′都是合法的字符常量。
说明:
(1)单引号中的大写字母和小写字母代表不同的字符常量,例如,′B′和′b′是不同的字符常量。
(2)单引号中的空格符U(此处用L』来代表一个空格)也是一个字符常量,但不能写成”(两
个连续的单引号)。
(3)字符常量只能包含一个字符,因此′abc′是非法的。
(4)字符常量只能用单引号括起来,不能用双引号括起来。例如,〃a〃不是字符常量,而是一个字符串。
字符常量在内存中占一个字节,存放的是字符的ASCⅡ代码值(请参阅附录7)。C语言规定,所有字符常量都作为整型量来处理,在计算机内部,其对应的整数值就是ASCⅡ字符集中该字符的序号(即ASCⅡ代码值)。因此字符常量′A′的值为65(八进制数l01),字母字符′a′的值为97(八进制数l41),数字字符′0′的值为48(八进制数60),空格字符
的值为32(八进制数40)。
6.1.2 转义字符常量
转义字符又称反斜线字符,这些字符常量总是以一个反斜线开头后跟一个特定的字符,用来代表某一个特定的ASCⅡ字符,这些字符常量也必须括在一对单引号内。例如:′\n′代表回车换行符(读者在前面几章的输出语句中已经用过)、′\〃代表一个单引号。表6.1列出了c语言中的转义字符。
6.1.3 字符串常量
字符串常量是由双引号括起来的一串字符。如”STRING”就是字符串常量,在printf和scanf中的”%d%d”也是字符串常量。在c语言中,系统在每个字符串的最后自动加入一个字符′\0′作为字符串的结束标志。请注意字符常量和字符串常量的区别,例如:′\101′、′Z′是字符常量,在内存中占一个字节;而”ABC\n”、”z”是字符串常量,前者占五个字节、后者占两个字节的存储空间,其中一个字节用来存放最后的′\0′。两个连续的双引号:〃〃也是一个字符串常量,称为“空串”,但要占一个字节的存储空间来存放′\0′。
有关字符串的内容将在第10章详细讨论。
6.1.4 可对字符量进行的运算
在C程序中,字符量可参与任何整数运算。例如:
′B′-′A′≡66—65≡1 ′a′+1≡97+1 ≡98≡′b′
此处符号;表示等价的意思。在以上表达式中的66、65、97、98都是十进制数,它们分别是字母B、A、a、b的ASCⅡ代码值。因此很容易利用算术运算把大写字母转换成小写字母或把小写字母转换成大写字母,例如:
′A′+32≡65+32=97′≡a′ ′b′-32≡98≡2s66≡8′
也可以通过算术运算把数字字符转换为整数值或把一位整数转换成数字字符,例如:
′9′-′0′≡57-48≡9 ′3′-′0′≡51-48≡3
′9+′0′≡9+48≡57≡′9′ 4+′0′≡4+48≡52≡′4′
在上述表达式中,57、48、51、52分别是用十进制数表示的字符9、0、3、4的ASCⅡ代码值。在这里,读者一定要分清诸如整数9和字符9的区别。整数9在程序中直接写成9;字符9在程序中用′9′表示,它的值是57。
在C语言中,字符量也可以进行关系运算。如:′a′>′b′,由于在ASCⅡ代码表中,′a′的值97小于′b′的值98,所以关系运算的结果为“假”,此关系运算表达式的值为0。但是如果进行逻辑运算的话,如:′a′&&′b′,由于′a′和′b′的ASCⅡ代码值都为非零,“与”运算表达式的值为1。
6.2 字符变量
C语言中,字符变量用关键字char进行定义,在定义的同时可以赋初值。例如:Char chl=′*′.ch2=′A′,ch3;
字符变量在内存中占一个字节,可以存放AscⅡ字符集中的任何字符。当把字符放入字符
变量中时,字符变量中的值就是该字符的ASCII代码值,所以字符变量可以作为整型变量来处理,可以参与对整型变量所允许的任何运算。例如:
Char c1,c2,c3; int k=5;
C1=’1’; c1++;
C2=’A’; c3=(c2+32+k)%25;
C语言中与字符处理有关的库函数请参阅附录8.
6.3 字符的输入和输出
6.3.1 调用printf和scanf函数输出和输入字符
在调用函数进行输入和输出时,必须在程序的开头出现包含头文件stdio.h的命令行:
#include <stdio.h>
用printf 函数输出字符时只需使用格式说明%c。
6.3.2 调用putchar和getchar函数输出和输入字符
调用putchar和getchar函数输出和输入字符putchar函数用于输出字符,其调用形式如下:
putchar(ch)
其中ch可以是字符变量或是字符常量,在以上函数调用的后面跟一个分号“;”,就形成一条独立的输出语句。如:putchar(′Y′);将在终端输出字符Y。
getchar函数用于输入字符,其调用形式如下:
ch=getchar( )
getchar后的一对圆括号内没有参数,但这一对圆括号不可少,9etchar()函数从终端读入一个字符作为函数值。以上调用形式把读入的一个字符赋给变量ch。在输入时,空格、回车符都将作为字符读入,而且只有在用户敲入Enter键时,读人才开始执行。
6.4 程序举例
程序举例
6.1 字符型常量
6.1.1 字符常量
C语言中,一个字符常量代表ASCⅡ字符集中的一个字符,在程序中用单引号把一个字符括起来作为字符常量。例如,作为字符常量的小写字母a,在程序中写成′a′,以便和标识符a区别开。因此,′A′、′C′、′t′、′! ′、′? ′都是合法的字符常量。
说明:
(1)单引号中的大写字母和小写字母代表不同的字符常量,例如,′B′和′b′是不同的字符常量。
(2)单引号中的空格符U(此处用L』来代表一个空格)也是一个字符常量,但不能写成”(两
个连续的单引号)。
(3)字符常量只能包含一个字符,因此′abc′是非法的。
(4)字符常量只能用单引号括起来,不能用双引号括起来。例如,〃a〃不是字符常量,而是一个字符串。
字符常量在内存中占一个字节,存放的是字符的ASCⅡ代码值(请参阅附录7)。C语言规定,所有字符常量都作为整型量来处理,在计算机内部,其对应的整数值就是ASCⅡ字符集中该字符的序号(即ASCⅡ代码值)。因此字符常量′A′的值为65(八进制数l01),字母字符′a′的值为97(八进制数l41),数字字符′0′的值为48(八进制数60),空格字符
的值为32(八进制数40)。
6.1.2 转义字符常量
转义字符又称反斜线字符,这些字符常量总是以一个反斜线开头后跟一个特定的字符,用来代表某一个特定的ASCⅡ字符,这些字符常量也必须括在一对单引号内。例如:′\n′代表回车换行符(读者在前面几章的输出语句中已经用过)、′\〃代表一个单引号。表6.1列出了c语言中的转义字符。
6.1.3 字符串常量
字符串常量是由双引号括起来的一串字符。如”STRING”就是字符串常量,在printf和scanf中的”%d%d”也是字符串常量。在c语言中,系统在每个字符串的最后自动加入一个字符′\0′作为字符串的结束标志。请注意字符常量和字符串常量的区别,例如:′\101′、′Z′是字符常量,在内存中占一个字节;而”ABC\n”、”z”是字符串常量,前者占五个字节、后者占两个字节的存储空间,其中一个字节用来存放最后的′\0′。两个连续的双引号:〃〃也是一个字符串常量,称为“空串”,但要占一个字节的存储空间来存放′\0′。
有关字符串的内容将在第10章详细讨论。
6.1.4 可对字符量进行的运算
在C程序中,字符量可参与任何整数运算。例如:
′B′-′A′≡66—65≡1 ′a′+1≡97+1 ≡98≡′b′
此处符号;表示等价的意思。在以上表达式中的66、65、97、98都是十进制数,它们分别是字母B、A、a、b的ASCⅡ代码值。因此很容易利用算术运算把大写字母转换成小写字母或把小写字母转换成大写字母,例如:
′A′+32≡65+32=97′≡a′ ′b′-32≡98≡2s66≡8′
也可以通过算术运算把数字字符转换为整数值或把一位整数转换成数字字符,例如:
′9′-′0′≡57-48≡9 ′3′-′0′≡51-48≡3
′9+′0′≡9+48≡57≡′9′ 4+′0′≡4+48≡52≡′4′
在上述表达式中,57、48、51、52分别是用十进制数表示的字符9、0、3、4的ASCⅡ代码值。在这里,读者一定要分清诸如整数9和字符9的区别。整数9在程序中直接写成9;字符9在程序中用′9′表示,它的值是57。
在C语言中,字符量也可以进行关系运算。如:′a′>′b′,由于在ASCⅡ代码表中,′a′的值97小于′b′的值98,所以关系运算的结果为“假”,此关系运算表达式的值为0。但是如果进行逻辑运算的话,如:′a′&&′b′,由于′a′和′b′的ASCⅡ代码值都为非零,“与”运算表达式的值为1。
6.2 字符变量
C语言中,字符变量用关键字char进行定义,在定义的同时可以赋初值。例如:Char chl=′*′.ch2=′A′,ch3;
字符变量在内存中占一个字节,可以存放AscⅡ字符集中的任何字符。当把字符放入字符
变量中时,字符变量中的值就是该字符的ASCII代码值,所以字符变量可以作为整型变量来处理,可以参与对整型变量所允许的任何运算。例如:
Char c1,c2,c3; int k=5;
C1=’1’; c1++;
C2=’A’; c3=(c2+32+k)%25;
C语言中与字符处理有关的库函数请参阅附录8.
6.3 字符的输入和输出
6.3.1 调用printf和scanf函数输出和输入字符
在调用函数进行输入和输出时,必须在程序的开头出现包含头文件stdio.h的命令行:
#include <stdio.h>
用printf 函数输出字符时只需使用格式说明%c。
6.3.2 调用putchar和getchar函数输出和输入字符
调用putchar和getchar函数输出和输入字符putchar函数用于输出字符,其调用形式如下:
putchar(ch)
其中ch可以是字符变量或是字符常量,在以上函数调用的后面跟一个分号“;”,就形成一条独立的输出语句。如:putchar(′Y′);将在终端输出字符Y。
getchar函数用于输入字符,其调用形式如下:
ch=getchar( )
getchar后的一对圆括号内没有参数,但这一对圆括号不可少,9etchar()函数从终端读入一个字符作为函数值。以上调用形式把读入的一个字符赋给变量ch。在输入时,空格、回车符都将作为字符读入,而且只有在用户敲入Enter键时,读人才开始执行。
6.4 程序举例
程序举例