资讯详情

C语言字符

在实际开发中,程序员很少使用单个字符来表示数据,字符的意义可以作为数组形成字符串。在本章中,我们重点介绍了字符和整数之间的关系ASCII代码相关知识。

字符类型char,只能用单引号 不要用双引号来包围" "包围。字符串只能使用双引号。" "不能用单引号包围 '包围。

使用输出字符 %c,使用输出字符串 %s。

一、ASCII码表

ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)是一套基于拉丁字母的计算机编码方案,主要用于显示现代英语和其他西欧语言。它是当今最常见的单字节编码方案,相当于国际标准ISO/IEC 646。

ASCII代码规范于1967年首次发布,最后一次更新是在1986年,包括33个控制字符(具有特殊意义无法显示的字符)和95个可显示字符。

1、ASCII 控制字符(字符编码: 0-31)

在ASCII在代码表中,前32个字符不能用于打印代码,而是用于控制打印机等外围设备。十进制符号中文解释十进制符号中文解释

0NULL空字符16DLE数据链路转义

1SOH标题开始17DC1设备控制1

2STX正文开始18DC2设备控制2

3ETX正文结束19DC3设备控制3

4EOT传输结束20DC4设备控制4

5ENQ询问21NAK拒绝接收

6ACK收到通知22SYN同步空闲

7BEL铃23ETB传输块结束

8BS退格24CAN取消

9HT水平制表符25EM介质中断

10LF换行键26SUB替换

11VT垂直制表符27ESC换码符

12FF换页键28FS文件分隔符

13CR回车键29GS组分隔符

14SO移出30RS记录分离符

15SI移入31US单元分隔符

2、ASCII 可打印字符(字符编码: 32-127)

共95个可打印字符。

1)32是空格。

2)48~57是0到90个阿拉伯数字;

3)65~90是26个大写英文字母;

4)97~122号为26个小写英文字母;

5)其余为标点符号、操作符号等。

6)第127个字符表示键盘上的删除命令。十进制符号中文解释十进制符号中文解释

32空格80P大写字母P

33!感叹号81Q大写字母Q

34"双引号82R大写字母R

35#井号83S大写字母S

36$美元符84T大写字母T

37%百分号85U大写字母U

38&与86V大写字母V

39'单引号87W大写字母W

40(左括号88X大写字母X

41)右括号89Y大写字母Y

42*星号90Z大写字母Z

43 加号91[左中括号

44,逗号92\反斜杠

45-连字号或减号93

46.句点或小数点944^音调符号

47/斜杠95_下划线

480096`重音符

491197a小写字母a

502298b小写字母b

513399c小写字母c

5244100d小写字母d

5355101e小写字母e

5466102f小写字母f

5577103g小写字母g

5688104h小写字母h

5799105i小写字母i

58:冒号106j小写字母j

59;分号107k小写字母k

60

61=等号109m小写字母m

62>大于110n小写字母n

63?问号111o小写字母o

64@电子邮件符号112p小写字母p

65A大写字母A113q小写字母q

66B大写字母B114r小写字母r

67C大写字母C115s小写字母s

68D大写字母D116t小写字母t

69E大写字母E117u小写字母u

70F大写字母F118v小写字母v

71G大写字母G119w小写字母w

72H大写字母H120x小写字母x

73I大写字母I121y小写字母y

74J大写字母J122z小写字母z

75K大写字母K123{左大括号

76L大写字母L124|垂直线

77M大写字母M125}右大括号

78N大写字母N126~波浪号

79O大写字母O127删除

3、转义字符

C在语言中,有两种情况需要转义字符:

1)对于 ASCII 编码,0~31(十进制)范围内的字符为控制字符,无法显示在显示器上或从键盘输入;

2)某些字符在C语言中有特殊用途,如单引号、双引号、反斜杠等。

C语言定义了一种简单的写作方式,即转义字符的形式。

转义字符的完整列表如下:转义字符的意义ASCII码值使用频率

\n换行(LF) ,将当前位置移到下一行开头。每天使用10

\单引号。39常用

\"双引号。34常用

\\反斜杠。92常用

\r回车(CR)13windows平台常用,linux平台不常用。

\t水平制表(HT)。920年前常用,现在不用了。

\v垂直制表(VT)。1120年前常用,现在不用。

\a响铃(BEL)。720年前常用,现在不用了。

\b退格(BS) ,将当前位置移到前列。820年前常用,现在不用了。

\f换页(FF),将当前位置移到下页开头。1220年前常用,现在不用了。

\n它是最常用的转义字符,表示换行,使文本从下一行开始输出,前一章已多次使用。

\r\n用于windows平台DOS格式文件的换行。

单引号、双引号、反斜杠是特殊字符,不能直接表示。

单引号是字符类型的开头和结尾,应使用\'表示。

双引号是字符串的开头和结尾,应使用\"表示。

反斜杠是转义字符的开头,应使用\\表示。

示例(book67.c)/*

*程序名:book67.c,该程序演示了C语言的转义字符。

*作者:C语言技术网(www.freecplus.net)日期:20190525

*/

#include

intmain()

{

printf("输出单引号\'的方法。\n");

printf("输出双引号\"的方法。\n");

printf("输出反斜杠\\的方法。\n");

printf("不转义也可以输出单引号。\n");

return0;

}

运行效果

c2ead68c24a013a1edbb1982a9452473.png

二、字符是整数

字符和整数没有本质区别。可以给出 char 变量一个字符也可以给它一个整数;另一方面,它可以给出 int 变量一个整数,也可以给它一个字符。

char存储在内存中的变量对应于字符 ASCII 代码值。如果是 %c 根据输出 ASCII 如果将代码表转换成相应的字符,如果是 %d 那么输出,还是整数。

int如果存储在内存中的变量是整数本身 %c 输出时,也会根据 ASCII 代码表转换为相应的字符。

也就是说,ASCII 代码表将整数与字符联系起来。

char类型占内存字节,signed char取值范围为-128-127,unsigned char取值范围为0-255。

若整数大于255,整数还是字符吗?

更准确的描述,在char字符值范围内(0-255),字符与整数没有本质区别。

字符必须是整数,0-255范围内的整数是字符,255以上的整数不是字符。

示例(book68.c)/*

*程序名:book68.c,演示字符与整数的关系

*作者:C语言技术网(www.freecplus.net)日期:20190525

*/

#include

intmain()

{

chara='E';

charb=70;

intc=71;

int&bsp;d = 'H';

printf("a=%c, a=%d\n", a, a);

printf("b=%c, b=%d\n", b, b);

printf("c=%c, c=%d\n", c, c);

printf("d=%c, d=%d\n", d, d);

}

运行效果

在ASCII码表中,E、F、G、H 的值分别是 69、70、71、72。

三、常用的库函数

以下是常用的字符函数,必须掌握。int isalpha(int ch);  // 若ch是字母('A'-'Z','a'-'z')返回非0值,否则返回0。

int isalnum(int ch);  // 若ch是字母('A'-'Z','a'-'z')或数字('0'-'9'),返回非0值,否则返回0。

int isdigit(int ch);  // 若ch是数字('0'-'9')返回非0值,否则返回0。

int islower(int ch);  // 若ch是小写字母('a'-'z')返回非0值,否则返回0。

int isupper(int ch);  // 若ch是大写字母('A'-'Z')返回非0值,否则返回0。

int tolower(int ch);  // 若ch是大写字母('A'-'Z')返回相应的小写字母('a'-'z')。

int toupper(int ch);  // 若ch是小写字母('a'-'z')返回相应的大写字母('A'-'Z')

以下是不常用的字符函数,极少使用,了解即可。int isascii(int ch);  // 若ch是字符(ASCII码中的0-127)返回非0值,否则返回0。

int iscntrl(int ch);  // 若ch是作废字符(0x7F)或普通控制字符(0x00-0x1F),返回非0值,否则返回0。

int isprint(int ch);  // 若ch是可打印字符(含空格)(0x20-0x7E)返回非0值,否则返回0。

int ispunct(int ch);  // 若ch是标点字符(0x00-0x1F)返回非0值,否则返回0。

int isspace(int ch);  // 若ch是空格(' '),水平制表符('/t'),回车符('/r'),走纸换行('/f'),垂直制表符('/v'),换行符('/n'),返回非0值,否则返回0。

int isxdigit(int ch); // 若ch是16进制数('0'-'9','A'-'F','a'-'f')返回非0值,否则返回0。

四、课后作业

1)研究ascii码表,重点关心几个问题:

(1)字符是整数,整数可以进行加减运算,字符可以吗?

(2)字母'A'-'Z'、'a'-'z'和数字'0'-'9'的ascii码值是不是连续的?

(3)字母'A'和'a'、'Z'和'z'的ascii码值的差是多少?

2)根据上面的研究结果,编写函数,实现字符操作常用的库函数的功能,函数的声明如下:int ISALPHA(int ch);   // 若ch是字母('A'-'Z','a'-'z')返回非0值,否则返回0。

int ISALNUM(int ch);   // 若ch是字母('A'-'Z','a'-'z')或数字('0'-'9'),返回非0值,否则返回0。

int ISDIGIT(int ch);   // 若ch是数字('0'-'9')返回非0值,否则返回0。

int ISLOWER(int ch);   // 若ch是小写字母('a'-'z')返回非0值,否则返回0。

int ISUPPER(int ch);   // 若ch是大写字母('A'-'Z')返回非0值,否则返回0。

int TOLOWER(int ch);   // 若ch是大写字母('A'-'Z')返回相应的小写字母('a'-'z')。

int TOUPPER(int ch);   // 若ch是小写字母('a'-'z')返回相应的大写字母('A'-'Z')

3)自定义一个函数,函数名是ctoi,利用ASCII码进行加减运算,把字符的'0'、'1'、'2'、'3'、'4'、'5'、'6'、'7'、'8'、'9'转换为整数的0、1、2、3、4、5、6、7、8、9。不允许用if和switch语句,只能用ASCII码运算,函数的声明如下:int ctoi(const char chr);  // chr为用字符方式表示的数字,函数的返回值为数字的整数。

调用示例:printf("'0' is %d\n",ctoi('0'));    // 输出结果是'0' is 0

printf("'9' is %d\n",ctoi('9'));    // 输出结果是'9' is 9

4)编写示例程序,测试char和unsigned char赋值超过取值范围的后果。

5)%不是转义字符,要输出%怎么办?

五、版权声明

C语言技术网原创文章,转载请说明文章的来源、作者和原文的链接。

作者:码农有道

如果文章有错别字,或者内容有错误,或其他的建议和意见,请您联系我们指正,非常感谢!!!

标签: m125dc2labb继电器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台