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

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

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

字符串的长度,以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个字符的功能。

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

    推荐阅读
  • 毕业论文答辩小技巧(怎么准备答辩)

    毕业论文答辩小技巧?要熟练掌握自己论文中的内容;答辩就是将论文中的内容,以演讲的形式表现出来,之后老师在针对论文中的内容进行提问,所以,熟练掌握自己论文中的内容,对自己顺利答辩是非常有用的;,下面我们就来说一说关于毕业论文答辩小技巧?

  • 空调制热效果不好(空调制热效果不好怎么办)

    空调制热效果不好清洗空调过滤网:冬季开启空调时由于有多月没有使用,过滤网上吸附的积尘增多,突然开启就会因为灰尘造成出风口的风量小无法感受热量。重新开启空调前可先进行一次清理,清除空调内的积尘。也可寻找专业人士通过高压蒸汽等专业方式上门进行深度清洁,消毒杀菌。而四通阀串气同样也会使制热功能降低。找专业人士更换止逆阀或者四通阀即可。

  • 右胸口疼是怎么回事 女生右胸口疼是怎么回事

    肋软骨炎肋软骨在肋的腹侧,一部分与胸骨相连,称为胸骨肋。肋软骨炎是胸肋软骨与肋骨交界处非炎症性的肿胀疼痛,患者病发的情况有急有缓,症状有胸部刺痛、酸痛或是跳痛,痛症有时放射到肩部、颈胸部。肋软骨炎病因不明,多认为与外伤或是劳损有关,上臂经常负重的人发病率偏高。肋间肌拉伤肋间肌拉伤多是劳作过度或是托举重物引起,患者伸手举臂或是运动时,肋间肌收缩,从而导致胸部疼痛。

  • 意面汉堡做法图解(教你做意面汉堡)

    意面汉堡做法图解将意大利面放入锅内煮约2分钟,面条软散便可,再将里面的蔬菜包也放锅中煮软捞出。捞出后的面马上用冰水冲洗后沥干水份,这样能保持面条的弹性,加入全部的调料和鸡蛋,用筷子搅拌匀均。嫌麻烦的可以直接戴上手套用手抓拌。铞中刷油,将面放模型内,煎成面饼。一面煎好后翻至另一面。记住煎面饼要有耐心,开中小火快煎。切好西红柿,加入芝士和生菜便可。这种好吃到炸天的心情,你懂的。

  • 渐行渐远的唯美句子(渐行渐远的唯美句子有哪些)

    渐行渐远的唯美句子大象的鼻子是用来捡开心果的,没必要弯下腰;往往,心中最爱的那个人,最后却离自己最远。总有一些人,渐行渐远,总有一些爱,无法告别。生命中再无如果,两个渐行渐远的人,不必多一句再见,也不必违心的送一句祝福。千帆过尽,回首当年,那份纯净的梦想早已渐行渐远,如今岁月留下的,只是满目荒凉。——郭敬明《左手倒影右手年华》明明就不习惯牵手,为何却主动把手勾。你的心事太多,我不会戳破。

  • 莫代尔50支和80支区别(莫代尔80支和40支区别)

    3、面料手感不同:高支的面料,纱线很细,这样的面料手感会很柔软,光泽度也好,更细腻也更亲肤,使用性能比普通纱支密度的面料优异,50支手感较差,细腻度低,80支手感较好,细腻度高。

  • 太阳能长期不用走的时候要不要把水放空? 太阳能长期不用走的时候不要把水放空

    如果自己能上楼的话,买一张防晒网盖上管是最好的。

  • 选作续编诗歌(孝敬是常回家看看)

    孝敬是常回家看看文/滕建猛难得放下一切杂念不带任何礼物就带上一份回家的心与老人聊聊鸡毛蒜皮问问田里的禾苗看看地里的蔬菜与鸡鸭打声招呼问好熟悉的人今年是否有个好收成一切都是那么亲切和纯朴一幢幢农村别墅拔地而起仿佛生活在梦里舒服卧在沙发里听一曲曲美妙的音乐享受拥有的一切胜过虚无缥缈有家的日子月亮总是特别圆孝敬老人是安安静静的吃一顿饭痛痛快快地洗一次碗一个柚子文/滕建猛一个小小的柚子来自县城里的超市剥去

  • 关于学校的文案(写学校的优美句子)

    天使大地焕然一新,春天给学校满园春色,春天给我们欢乐和希望,催促我们奋发向上。昔日四座破烂的校舍不翼而飞,崭新的教室和会议室屹立在屏障似的围墙里面,小巧玲珑的传达室守卫在大门西侧。我的生命中不能没有你。前来报名的学生喜气洋洋,向老师询问着开学事宜;而老师们有的准备新学年的教材及教学用具,有的则在清扫布置教室,以优雅清新的学习环境迎接新生的到来。一夜之间,校园银装素裹,玉树琼枝,好一派美丽的雪景。

  • 2022盐城市图书馆故事演播员招募公告 盐城市少儿图书馆

    为了给小读者们提供一个充分展示自我、锻炼自我、建立自信的机会,让孩子们想说、敢说、会说,盐城市图书馆特别推出“小盐姐姐故事绘”招募故事演播员活动如下。