关于字符

来源:互联网 发布:张大大主持的网络节目 编辑:程序博客网 时间:2024/05/16 05:35

关于字符

一、     字符常量

字符常量就是用单撇号括起来的一个字符。没有赋值,只是一个括起来的字符。

二、     字符变量

字符变量:声明一个字符变量然后赋值,值就是一个字符。char类型长度为1字节,所以只能赋值一个长度字符,用单撇号括起来。

占位符:%c,每次只能读取一个字符。

三、     转义字符

因为有些符号是不能显示出来的,比如说回车符,换页,空操作符等等,我们需要使用转义字符进行处理。总结如下:

‘\n’:换行符    ‘\t’:制表符,使下一个输出的数据跳转到下一个输出区

‘\b’:退格,将当前的输出位置退回前一列处,即小时前一个已输出的字符。

‘\r’:回车,将当前的输出位置返回在本行开头.

‘\f’:换页,将当前的输出位置移到下页的开头

‘\0’:代表ASCII代表为0的控制字符,即“空操作”字符。作为字符串的结束标志。

‘\ddd’:代表1-3位八进制数所代表的字符.

‘\xhh’:1-2位十六进制数所代表的字符.

四、     字符数据与整型数据的关系

我个人认为:字符与整型变量的本质是相同的,通过ASCII码进行转换,只是表现形式不同而已,本质是一样的。例如:

int a=97;

char b=’A’;

printf(“%c”,a);

printf(“%d”,b);

我声明了整型与字符的变量,但我输出的时候用的占位符相反,也就是说:不管你输入的数据是什么形式,只看你怎么输出。这时编译器会自动执行一个隐式转换,把int->char,char->int,桥梁是ASCII码,大家可以看一个ASCII码表,‘A’就是97.

五、     字符数组

a)      关于字符数组的说明:在C语言中,字符数组就是补充没有字符串类型的缺陷而产生的,当然,字符数组的用处非仅此而已。

b)     关于字符数组的声明和初始化:

char a[10]=””;//声明一个字符数组长度为10,初始化为空

char b[]=””;//声明一个字符数组,长度未知,声明为空

char c[5]=”abcd”;//这是最标准的形式,长度为5,并且赋值为abcd

 

c)      关于字符串长度的说明:当我们声明一个数组的时候,如上char c[5]的长度为5个字节,但是我们只能赋值4个字节,因为系统默认会在字符串最后添加一个尾零,也就是’\0’,数组下表从0-4,即0-(n-1)

d)     尾零的作用:通常我们使用尾零判断字符串读取是否到最后,遍历字符串内容或者比较的时候用的比较多。尾零是系统自动添加且无法查看,无需人为添加。

e)       

六、     字符串常量

‘a’与“a”的区别:首先,’a’是一个字符,”a”是一个字符串类型。字符类型是没有尾零的,而字符串结尾有尾零,所以说:sizeof(‘a’)=1;

sizeof(“a”)=2;

 

其实,C语言是没有字符串类型的,如果想使用字符串就必须用到字符数组,即:C语言中是将字符串作为字符数组来处理的。作者怕混淆概念,遂如下论述总结:

字符数组与通常的数组区别:

char a[10]=”hello C”;

charb[10]={‘h’,’e’,’l’,’l’,’o’,’ ‘,’C’};

这两个写法区别就是前者是字符数组有尾零,sizeof(a)=8;

后者是数组,存放的是字符常量,sizeof(b)=7;就差一个尾零,其他用法一致。

 

 

关于字符串的几点细节:

1、        输出字符不包括结束符’\0’

2、        用%s格式符输出字符串时,printf函数中的输出项是字符数组名,而不是数组元素名:printf(“%s”,a);

3、        如果数组长度大于字符串的实际长度,也只输出遇到’\0’结束。

4、        如果一个字符数组中包含一个以上’\0’,则遇到第一个’\0’时输出结束

5、        可以用scanf函数输入一个字符串

scanf(“%s”,a);

6、        C语言中,数组名代表该数组首元素地址。

 

七、     常见的字符串函数

a)      输入一个字符串到字符数组:gets

b)     输出一个字符串到字符数组:puts

c)      连接两个字符数组中的字符串,把2接到1后:strcat(1,2);

d)     将字符串2复制到字符数组1中去:strcpy(1,2);

e)      比较字符串1与字符串2的大小,如果1>2,函数值为一个正整数。如果1<2,函数值为一个负整数。如果1=2,函数值为0。

f)       测试字符串长度:strlen(字符数组);//strlen为有效长度,sizeof为所占内存空间大小

g)      将字符串中大写字母替换成小写字母:strlwr(字符串);

h)     将字符串中小写字母替换成大写字母:strupr(字符串);

i)       将字符转换成整型变量:atoi(字符串);

八、     字符型指针

a)      字符型指针就是用指针的方法引用字符串,通过数组名和下标访问字符数组中的元素,也可以通过%s来输出一个字符串。用字符指针指向一个字符串。

b)     C语言中对字符串常量是按字符数组来处理的,在内存中开辟了一个字符数组用来存放该字符串常量,但这个数组没有名字,不能通过数组名来引用,只能通过指针变量来引用。

c)      我们可以通过指针指向字符串常量,但是不能通过指针变量对该字符串常量重新赋值,因为字符串常量是不能改变的,是常量。

Char*string=”hello”;//正确的;

char *string;  string=”hello”;//错误的写法,二次定义

d)     通过字符数组名或字符指针变量可以输出一个字符串。而对一个数值型数组,是不能用数组名输出它的全部元素。

e)      对字符串中下标的存取,可以用下标法或指针方法。

f)        

九、     做题相关规律及细节总结:

a)      大小写字母转换:小写字母’a’-‘z’的ASCII—减去32—>大写字母’A’-‘Z’的ASCII

原创粉丝点击