第六章 字符型数据
1·字符型常量
C语言中,一个字符常量代表ASCII字符集中的一个字符,在程序中用单引号把一个字符括起来作为字符常量。
说明:
(1)单引号中的大写字母和小写字母代表不同的字符常量
(2)单引号中的空格符’ ’ 也是一个字符常量,但不能写成两个连续的单引号
(3)字符常量只能包含一个字符,‘agc’是非法的
(4)字符常量只能由单引号括起来,不能用双引号括起来
字符常量在内存中占一个字节,存放的是字符的ASCII代码值。C语言规定,所有字符常量都作为整形量来处理,在计算机内部,其对应的整型数就是ASCII字符集中该字符的序号(即ASCII代码值)。字符常量‘A’的值是65(八进制数101)‘a’97(141)‘0’48(60)‘ ’32(40)
转义字符常量
转义字符又称反斜线字符,这些字符常量总是以一个反斜线开头后跟一个特定的字符,用来代表某一个特定的ASCII字符,这些字符常量也必须括在一对单引号内。
字符形式 | 功能 | 字符形式 | 功能 |
---|---|---|---|
\n | 回车换行 | \ | 反斜杠字符‘\’ |
\t | 横向跳若干格(代表“Tab”键) | \’ | 单引号(撇号)字符 |
\v | 竖向跳格 | \’’ | 双引号字符 |
\r | 回车符 | \ddd | 三位八进制数代表一个ASCII字符 |
\f | 换页符 | \xhh | 二位十六进制数代表的一个ASCII字符 |
\b | 退格符(代表“Backspace”键) | \0 | 空值,其ASCII码值为0 |
注意:转义字符常量,如‘\n’,‘\101’只代表一个字符
反斜线后的八进制数可以不用0开头
反斜线后的十六进制数只可由小写字母x开头,不允许用大写字母X,也不许用0x开头。如‘\x41’代表字符常量‘A’,‘\x6d’(也可以写成‘\x6D’)代表字符常量‘m’。
2·字符串常量
字符串常量是由双引号括起来的一串字符,“%d%d”也是。在C语言中,系统在每个字符串的最后自动加入一个字符‘\0’作为字符串的结束标志。“ABC\n”占五个字节,最后一个字节存放‘\0’,两个连续的双引号:“”也是一个字符串常量,称为“空串”,但要占一个字节的存放空间来存放‘\0’。
可对字符量进行的运算
在C语言中,字符量可参与任何整数运算
‘B’-‘A’ ≡66-65≡1 ‘a’+1≡97+1≡98≡‘b’
此处符号≡表示等价的意思
3·字符变量
C语言中,字符变量用关键字char进行定义,再定义的同时可以进行赋值。
char h,n,m=’a’;
4·字符的输入输出
调用scanf和printf函数输入输出字符
注意:(1)当用scanf,使用格式说明中的%c一个紧挨着一个时,字符之间不能有间隔符(但输入数字时可以有)这是空格、回车符等都将作为字符读入。
例如:
char a,b,c;
scanf(“%c%c%c”,&a,&b,&c);
当输入 TH
E时。变量a中将存放T,变量b中存放H,变量c中存放回车符,字符E并没有读入。当格式说明中加入空格、回车符等,将被认为是间隔符而不被读入。
(2)当交叉输入数值数据和字符数据时,即在输入项列表中交替出现字符变量和数值变量,由于他们从终端读取数据的方式不同,如果客户不加注意,就很容易产生错误的输入结果。
例如:
int a1,a2;char c1,c2;
scanf(“%d%c%d%c”,&a1,&c1,&a2,&c2);
必须用以下形式输入数据:10A(空两格个)20B
5·调用putchar和getchar函数输入字符
putchar(ch); ch可以是字符变量或字符常量 将在终端输入ch
ch=getcher() getchar后圆括号中没有参数,但不可省略,从终端读入一个字符作为函数值
练习1·设计程序输出26个大写字母和他们的ASCII代码,每行输出两组数据。
#includ<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’);
}
2编写程序统计输入字符中空格符、换行符、横向跳格符(制表符)的个数,用!号结束输入。
#include<stdio.h>
#include<ctype.h>
main()
{long n;char ch; // 函数isspace判断字符是否是空格符、换行符或横向跳
while((ch=getchar())!=’!’) // 格符函数isalpha判断字符是否是字母,若是函数值是
if(isspace(ch)) n++; // 1,函数tolower(c)把大写字母换为小写,其他字符
printf(“n=%ld\n”,n); // 不变
}
来源:CSDN
作者:Pamper_21
链接:https://blog.csdn.net/Pamper_21/article/details/104123228