百摩网
当前位置: 首页 生活百科

c语言字符串的基本用法(.字符串基本操作之一)

时间:2023-08-19 作者: 小编 阅读量: 1 栏目名: 生活百科

字符串的长度,以ASCII字符编码为例,是指这个字符串中所有字符的个数总和。如下面的字符串:图1我们就可以从第一个字符L开始计数,之后向后移动一个位置,每次移动一个位置,字符的个数加1,直到遇到最后一个字符’\0’为止,代码可以这样编写:图2图2中第6行代码将指针的值设置为字符数组变量s,即将指针变量p指向了字符串的起始地址,之后将字符串长度计数变量count初始化为0,之后每次递增一个位置,count的值就增1。

C语言字符串作为一种数据类型,是最为常用的一种操作对象,它的用法和基本类型int、char、double等不太一样,常用的操作也不是 、-、*和/等操作符,而是诸如合并两个字符串为一个新的字符串、将一个字符串删除首部或尾部指定数目的字符、将一个字符串按照指定次数进行合并以及分割字符串为等长的字符串操作,这些操作可以说是与整型的操作符类似,但含义有所改变,下面我们就学习如何实现这几个常用的功能。

在开始学习以上4个字符串操作之前,首先介绍两个重要的概念,一个是逐个字符依次访问字符串,另一个是字符串长度。

逐个地访问字符串中的字符,就是从字符串的起始地址开始,每次将访问的地址向后移动一个单元,我们可以通过一个指针的递增操作符实现,这样就可以访问到新的地址,之后通过指针间接操作符*,就可以访问这个地址所存储的字符了。例如,将指针p指向字符串s的第一个位置,p = s,我们就可以使用*p访问字符串变量s的第一个字符;之后将指针向后移动一位,即指针p递增操作,p,再通过*p访问的内容就是s字符串中的第2个位置的字符,依次类推,就可以访问字符串中的每一个字符,直到遇到字符串终止符’\0’为止。

字符串的长度,以ASCII字符编码为例,是指这个字符串中所有字符的个数总和。比如:字符串”Live or die?”的长度为12,字符串长度包括引号内的所有字符,当然也包括空格字符和符号字符,如上例中的的两个空格和一个问号字符。我们该如何计算字符串的长度值呢?长度值的计算是通过起始点和终止点,对于字符串来说,就是字符串的起始地址和终止地址,起始地址表示为字符数组的变量名称,终止地址就是特殊字符’\0’所在的地址。如下面的字符串:

图1

我们就可以从第一个字符L开始计数,之后向后移动一个位置,每次移动一个位置,字符的个数加1,直到遇到最后一个字符’\0’为止(’\0’不计入字符串的长度),代码可以这样编写:

图2

图2中第6行代码将指针的值设置为字符数组变量s,即将指针变量p指向了字符串的起始地址,之后将字符串长度计数变量count初始化为0,之后每次递增一个位置,count的值就增1。第8-11行使用了一个循环语句,这个语句的循环终止条件为*p == ‘\0’,即当前的字符为’\0’,如果*p值为其它字母,那么将一直执行代码第9、10行代码,第9行代码递增count的值,第10行递增指针p的值,如果遇到了特殊字符’\0’,那么while循环语句就停止执行,count变量中就记录下字符的个数,即计算出这个字符串的长度。

字符串拼接功能,是指将两个字符串a和b中的字符进行拼接,形成一个新的字符串c。比如:a字符串内容为”abc”,b字符串的内容为”def”,执行字符串拼接后形成的新字符串为”abcdef“。下图3实现了字符串拼接功能,拼接字符串时,原字符串a和b中的数据保持不变,将拼接后的字符串存放至新的位置,字符数组c变量为这个位置的起始地址,需要注意的是:字符数组c所占用的空间大小一定不小于字符串a和b的长度之和再加1(用以存储字符串终止符’\0’)。

图3

在图3的代码中,第19-21行,定义了三个指针,分别指向三个数组a,b和c的首地址,代码第23-27行实现将字符串a中的字符逐个复制到数组c中,代码采用的是通过指针逐个访问字符串a中的字符,并对c数组中的对应位置进行赋值,每次复制一个字符到c数组中;采用同样的方法,代码第29-33行,实现对字符串b中的字符依次复制到数组c中,当前的指针pc在完成对字符串a的复制操作后,位置停留在第4个位置,这样在进行对b字符串进行逐个访问时,新的字符便会追加到已包含a数组数据的c数组的最后。完成对字符串a和b的复制操作后,第35行代码执行了一个赋值操作,将数组c的最后一位设置为’\0’值,即构造称为一个字符串。第37行代码输出了表示a和b字符串合并后的结果。

删除一个字符串首部指定个数的字符是指将一个字符串的最左端的从现有字符串移除,如源字符串”abc efg hijk lmn”,删除首部4个字符后,新的字符串变为了”efg hijk lmn”。如何进行操作呢?我们只需要将第4个位置后的所有字符依次向前移动4个位置就可以。

图4

图4代码中,第41行将指针ps指向第5个元素’e’所对应的地址,第42行代码将指针ps0执行原字符串的首地址。通过第43-47行代码中的循环语句,依次将第5个位置之后的代码前移4个位置,即’e’移至0位置,‘f’移至1位置,‘g’移至2位置……,最后将’n’移至11位置,代码第44行实现此功能,第45行代码是将新字符串的指针向后移动一个位置,第46行代码是将旧字符串的指针向后移动一个位置,即两个指针始终保持距离为4的偏移,最终实现移动所有字符。第49行代码是将字符出终止符添加到末尾,形成一个新的字符串。这样就完成了从起始位置删除4个字符的功能。

如何删除字符串尾部指定数目的字符呢?见《字符串基本操作之二》

    推荐阅读
  • 电脑不知道卸载了什么上不去网了(应该怎样处理)

    应该是网卡的驱动被删除了,先进入计算机管理,再进入设备管理器看一下网络适配器的情况如果有感叹号就是驱动被删了,去别的电脑下载一个对应型号的驱动用U盘拖到你电脑上安装一下就好了而且只装一个驱动精灵也是没什么用,没有网络他是只能检测,不能打驱动的,我来为大家科普一下关于电脑不知道卸载了什么上不去网了?以下内容希望对你有帮助!而且只装一个驱动精灵也是没什么用,没有网络他是只能检测,不能打驱动的。

  • 沈腾马丽电影少年(马丽战胜易烊千玺和吴京)

    目前,2022年的中国年度票房冠军电影,还是由吴京和易烊千玺领衔主演的抗美援朝战争大片《长津湖之水门桥》。本年度,在中国男演员中,易烊千玺和吴京等分别位于主演电影累计总票房冠亚军的位置,这仅仅局限于中国男演员。如此,马丽成为继白百何之后,国内最具票房号召力的女演员。

  • 网络电视下载什么软件看直播电视(网络电视下载哪些软件看直播电视)

    网络电视下载什么软件看直播电视?网络电视下载什么软件看直播电视电视家:这是一款由电视家开发团队做的软件,内容比较全的,直播源维护的也比较及时,这个软件有电视家2.0、电视家3.0、电视家尝鲜版,但是都可以正常使用,频道数量方面上千个,还可以自定义源。1000多个网络频道每日更新,同时兼具回看、节目预告、收藏等功能。可以订制节目;节目预告功能需改进。

  • 大唐荣耀沈珍珠什么时候去冷宫(大唐荣耀沈珍珠失踪)

    李豫的确没有将沈珍珠带回长安,而是让她自己留在洛阳,对她不理不顾。也不管是什么原因,总之,当史思明再次攻陷洛阳的时候,李豫也再次抛弃了沈珍珠,而沈珍珠也从此失踪了。是早已离开了人世,还是对李豫抛弃自己两次感到绝望,或是自己不愿意回宫。而她,以及她悲剧的一生,就是这历史对女人最不公的对待。

  • 猪脚炖海带的做法四川(红烧猪脚炖海带)

    茴香、砂仁、良姜,中文火煸香,添加猪脚煸炒,喷少量米酒,煸炒掂匀后,将全部原材料倒进石锅。

  • 历经磨难才可登绝巅(自古雄才出磨难)

    孟子在对历史人物进行研究之后,得出这样一个结论:生于忧患,死于安乐。动物园里太安乐了,有饲养员专门饲养,不愁吃,不愁喝,没有饥饿的忧患。但是我们抵抗寒冷的能力就会下降,身体的机能会退化。否极泰来,否到了极点,泰就来了,泰来之后,紧接着就是否。在忧患中奋斗,这是一个善因,善因必然会有善果。在安乐中享受,这是一个恶因,恶因必然有恶果。

  • 电视剧老九门剧情(电视剧老九门剧情简述)

    电视剧老九门剧情民国年间,九大家族镇守长沙,被称为“九门提督”。张启山为了国家大义和手足之情,北上去往新月饭店为二月红爱妻求药。尹新月帮助张启山等人顺利返回长沙,二人暗生情愫。二月红爱妻病入膏肓,服药后不见好转,最终故去。二月红悲伤之余却意外发现家族祖辈与矿山亦有重大关联,于是振作精神,决定与张启山联手,解开矿山之谜。

  • 为什么手机上面应用未安装(应用程序未安装)

    下面给大家介绍几种方法。

  • 王者荣耀爆击伤害是基础伤害的多少倍(正确答案是什么)

    跟着小编一起来看一看吧!王者荣耀爆击伤害是基础伤害的多少倍用训练营的人偶进行测试,暴击伤害是基础伤害的两倍。如果出无尽,可以加40%的暴击效果,暴击伤害变为基础伤害的2.4倍。铭文也可提供额外的暴击效果。实时对战时,领略爽快连招、推塔三杀、团灭超神的酣畅淋漓。

  • 电脑一直出现安装程序正在启动服务(怎么解决电脑显示安装程序正在启动服务)

    电脑一直出现安装程序正在启动服务首先可以看看该故障出现的原因是否是因为启动了acpi造成的,大家试着重启一下计算机,然后在系统还没有启动好的时候按F11进入BIOS,接下来禁用ACPI,然后再次重启计算机即可。大家若是有系统安装盘的话,可以试着利用系统盘引导进入系统,然后将分区中的Winload.exe覆盖替换一下。