Professional Documents
Culture Documents
第 6 章 字符型数据
字符型常量
字符常量
转义字符常量
字符串常量
可对字符量进行的运算
字符变量
字符的输入和输出
调用 printf 和 scanf 函数输出和输入字符
调用 putchar 和 getchar 函数输出和输入字符
程序举例
字符型常量——字符常量
说明
单引号中的大写字母和小写字母代表不同的字符常量。例
如, 'B' 和 'b' 是不同的字符常量。
单引号中的空格符也是一个字符常量,不能写成两个连续的
单引号。
字符常量只能包含一个字符 , 因此 'abc' 是非法的。
字符常量不能用双引号括起来。例如 , "a" 不是字符常量 , 而是
一个字符串。
字符型常量——字符常量
字符常量在内存中占一个字节 , 存放的是字符的
ASCII 代码值。
C 语言规定 , 所有字符常量都作为整型量来处理 ,
在计算机内部 , 其对应的整数值就是 ASCII 字符
集中该字符的序号 ( 即 ASCII 代码值 ) 。
• 字符常量 'A' 的值为 65( 八进制数 101)
• 字符常量 'a' 的值为 97( 八进制数 141)
• 数字字符 '0' 的值为 48( 八进制数 60)
• 空格字符的值为 32( 八进制数 40) 。
字符型常量——转义字符常量
转义字符(又称反斜线字符)是以一个反斜线开头后跟一
个特定的字符 , 用来代表某一个特定的 ASCII 字符 , 这些
字符常量也必须括在一对单引号内。
字符型常量——转义字符常量
说明
转义字符常量 , 如 '\n','\101','\141' 只代表一个字符。
反斜线后的八进制数可以不用 0 开头。
例如 : '\101' 代表的就是字符常量 'A', '\141' 代表字符常量 'a' 。
反斜线后的十六进制数只可由小写字母 x 开头 , 不允许用
大写字母 X, 也不能用 0x 开头。
例如 : '\x41' 代表字符常量 'A' , '\x6d' ( 或 '\x6D' ) 代表字符常
量 'm' 。
字符型常量——字符串常量
字符串常量是由双引号括起来的一串字符。如" STRING
"就是字符串常量。
在 C 语言中 , 系统在每个字符串的最后自动加入一个字
符 '\0' 作为字符串的结束标志。
注意
字符常量 'Z' 在内存中占一个字节;字符串常量 "Z" 占两
个字节 , 其中一个字节用来存放 '\0' 。两个连续的双引号 :
""也是一个字符串常量 , 称为“空串” , 占一个字节的
存储空间来存放 '\0' 。
字符型常量
——可对字符量进行的运算
在 C 程序中 , 字符量可参与任何整数运算。例如 :
也可以通过算术运算把数字字符转换为整数值或把一
位整数转换成数字字符 , 例如 :
字符量也可以进行关系运算。
例如
char c1='1', c2='A', c3;
int k=5;
c1++;
c3=( c2+32+k)%25;
字符的输入和输出
• 1. 用 printf 函数输出字符
有程序段: 有程序段:
char a ='S' ; char a ='A' ;
printf ( " a=%c\n " , printf ( " a =%3c\n " , a );
a ); 输出结果 :
输出结果 : a = A ( A 前有两个空
a=S 格)
用 printf 函数输出字符时 , 可
以在格式字符前加一个整数 ,
用来指定输出字符时所占的宽
度。
字符的输入和输出
• 2. 用 scanf 函数输入字符
有程序段 :
注意 : char a, b, c;
1 )输入字符时 , 字符之间不应有间隔符。 scanf ( " %c%c%c " , &a, &b, &c );
若从第一列开始输入 : 输入:
TH<CR> THE
E<CR> 变量 a,b,c 分别得到字符 T,H,E
则在变量 a 中将存放字符 T ,变量 b 中存放字
符 H ,变量 c 中存放回车符,字符 E 并没有读
入。
2 )只有在用户敲入 Enter 键时 , 读入才开始执
行。
字符的输入和输出
• 2. 用 scanf 函数输入字符
结果
#include <stdio.h>
main( )
{ char ch; int i;
for( i=0; i<26; i++)
{ ch =i +65;
if ( i%2 ==0 ) printf ("\n");
printf("c=%c ASCII =%d", ch, ch );
}
putchar('\n');
}
程序举例
#include <stdio.h>
main( )
{
printf ( " Press Enter to continue\n
" );
while( getchar ( ) ! ='\n') ;
}
程序举例
例 6 .3 以下程序把从终端输入的一行字符中所有的小写字母转换成大写字母 ,
其他字符不变。
#include <stdio.h>
main( )
{ char c;
while ( ( c =getchar () ) !='\n' ) 结果
{ if ( c >='a' && c <='z' ) c =c -'a' +'A' ;
putchar( c ); **The Programming**<CR>
} **THE PROGRAMMING **
putchar( '\n' );
}
程序举例
例 6 .4 编写程序统计输入的字符中空格符、换行符和横向跳格 ( 制表 ) 符的个
数 , 用 ! 号结束输入。
#include <stdio.h>
#include <ctype.h>
main ()
{ long n =0; char ch;
while ( ( ch =getchar () ) !='!' )
if ( isspace ( ch ) ) n++;
printf ("n =%ld\n", n );
}
程序举例