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

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

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

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

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

    推荐阅读
  • 四川省2022公务员考试排名(2022四川公务员考试笔试岗位排名公布)

    2022年四川公务员考试笔试于4月29日在在四川人事考试网开通查询,笔试排名于5月6日起在各地市人事考试网陆续公布,考生可点对点查询本人的岗位排名,面试资格复审公告于名单同样于各地市人事考试网公布。未在规定时限内参加面试资格审查的,视为考生自动放弃面试资格。经资格审查合格的人员,凭本人有效身份证和有关证明材料参加面试。面试时间暂定为5月20日至22日。

  • 奶茶店加盟有哪些品牌好(开奶茶店加盟哪个品牌好)

    2、开店中期设备订货:帮助订购新店所需设备货品、全程追踪进度,确保物料到货及时,并赠送超值开业礼包。

  • 爱酱逃生(你知道为了防止玩家存档作弊)

    值得一提的是,早期的游戏机是不支持存档的。但这个决定确实彻底改变了整个游戏界。虽然存档机制受到了不小的质疑,但随着游戏技术的不断发展。这招不仅大大降低了游戏的难度,甚至彻底破坏了游戏的节奏。于是如何限制玩家对于游戏存档的滥用成为了很多游戏开发者的第一要务。很多动作游戏就是因为这个原因遭到了玩家们的一致差评。这也就是宫崎英高的魂系列作品,其实如果单看魂系列的难度也不算很难。要说狠还是宫崎老贼狠。

  • 微信怎么绑卡绑定银行卡(微信绑卡绑定银行卡的方法)

    下面更多详细答案一起来看看吧!微信怎么绑卡绑定银行卡打开微信APP,点击右下角“我”。点击进入“钱包”。输入支付密码,输入持卡人和卡号,点击“下一步”。输入发送的验证码,点击“下一步”即可。

  • 2023木兰草原门票多少钱一张?(2021年木兰草原门票)

    日场成人门票70元,夜场门票70元/人,1.2米(含1.2米)以下的儿童、65岁以上卷局靠人现役军人、援鄂医疗队(凭相关有效证件)免票。

  • 新打的耳洞带不进去怎么办(新打的耳洞带不进去解决办法推荐)

    以下内容希望对你有帮助!新打的耳洞带不进去怎么办建议消毒耳洞处和耳钉后,顺着耳洞的方向带,自己带不上先让他人帮忙,等愈合后自己就能带上了。试试从后面穿能不能穿进去,能的话就暂时那样穿着养一下耳洞吧。养到不发炎了再取下来照正常的穿。最好用银针的耳钉。还有一种可能,就是在打耳洞的时候,没有垂直的打,打完了,所以导致现在不好穿,等消炎了就可以了。

  • 情侣相处的原则是什么(情侣相处必经哪几个阶段)

    感情的事不是一蹴而就的,需要经过漫长的由陌生到熟悉的过程。比如在聊天中说一些模棱两可的话,来看对方的反应。在双方都有好感的时候,暧昧期也就是确定感情的关键时期。经过暧昧期,感情逐渐变得明朗,两个人也可以大方地向外人宣告恋情。这个阶段,是爱情中最浪漫、最甜蜜的时间。一键删除消息不可恢复,私密的话题只属于情侣二人。

  • 玉竹孕妇可以吃吗(玉竹孕妇能吃吗)

    玉竹孕妇可以吃吗孕妇能吃玉竹。具体有以下几种好处:玉竹有改善睡眠的作用,在明代的时候玉竹就作为一种中药,有养阴润燥、生津止咳的作用,可以用来煲汤,汤中虽然没有比较重的药味,但是能够安神入眠。能够增强身体的抵抗能力,因为玉竹里面含有抗氧化的成分,调节身体的免疫力,能够预防出现肿瘤。玉竹有治疗上火的作用,比如嘴巴里面有口腔溃疡,或者是怀孕后心火气盛、紧张、焦虑,可以用玉竹来做甜汤有降心火的作用。

  • 热水器水不热怎么办(如何解决呢)

    以下内容希望对你有帮助!热水器水不热怎么办调节热水器的开关,火力大小,比如冬天洗澡热水器开关方向就是冬,夏天就指向夏。调节好水温,没有热水可能是水温偏向于冷水,冷水过多水就不热了。没打上火,很多情况开热水时热水器都没打上火所以没有热水,可以关掉重新开一下。热水器内部电路出现问题,也会造成热水不热的现象。在自己不会修的情况下,可以找维修师傅上门来检查热水器哪里出了故障。

  • 打完新冠疫苗注意事项要忌口吗(打完新冠疫苗要注意什么)

    下面内容希望能帮助到你,我们来一起看看吧!由于新型冠状病毒爆发时间才一年时间,人们对这类疾病的认识还不足,而新冠疫苗也是刚刚投入临床观察,还有一些禁忌以及注意事项并不是很明显,虽说没有严格说明接种新冠疫苗后不能吃什么,但为了不对新冠疫苗药效造成影响。一般生活中是不建议吃高盐、高脂肪、辛辣刺激性、烟酒以及高碳酸饮品的,避免出现消化道疾病,严重者可导致消化道出血等并发症。