当前位置: 首页 > news >正文

【时时三省】(C语言基础)使用字符串处理函数

山不在高,有仙则名。水不在深,有龙则灵。 ----CSDN 时时三省

在C函数库中提供了一些用来专门处理字符串的函数,使用方便。几乎所有版本的C语言编译系统都提供这些函数。下面介绍几种常用的函数。

①puts函数

输出字符串的函数

其一般形式为

puts(字符数组)

其作用是将一个字符串(以' 10 '结束的字符序列)输出到终端。假如已定义str是一个字符数组名,且该数组已被初始化为“China”。则执行:

puts ( str );

其结果是在终端上输出“China”。由于可以用printf函数输出字符串,因此puts函数用得不多。

用puts函数输出的字符串中可以包含转义字符。例如:

char str = ( " China\nBeijing”);

puts ( str );

输出:

China

Beijing

在用puts输出时将字符串结束标志' \0 '转换成' \ n ',即输出完字符串后换行。

②gets函数

输入字符串的函数

其一般形式为

gets(字符数组)

其作用是从终端输入一个字符串到字符数组,并且得到一个函数值。该函数值是字符数组的起始地址。如执行下面的函数:

gets ( str );

如果从键盘输入:

Computer

将输入的字符串“Computer”送给字符数组str(请注意,送给数组的共有9个字符,而不是8个字符),返回的函数值是字符数组str的第一个元素的地址。一般利用gets函数的目的向字符数组输入一个字符串,而不大关心其函数值。

注意:用puts和gets函数只能输出或输入一个字符串,不能写成puts ( strl , str2 );gets ( str1 , str2 )

③strcat函数

字符串连接函数

其一般形式为

strcat(字符数组1,字符数组2)

strcat是STRing CATenate(字符串连接)的缩写。其作用是把两个字符数组中的字符串连接起来,把字符串2接到字符串1的后面,结果放在字符数组1中,函数调用后得到一个函数值——字符数组1的地址。例如:

char str1 [ 30 ] = {" People's Republic of"} 

char str2[ ]= ( " China”);

printf ( " % s”, strcat ( strl , str2 ) );

输出:

People ' s Republic of China

说明:

( 1 )字符数组1必须足够大,以便容纳连接后的新字符串。本例中定义strl的长度为30,是足够大的,如果在定义时改用

strl [ ] = { " People ' s Republic of " },就会出问题,因长度不够。

( 2 )连接前两个字符串的后面都有' \0 ' ,连接时将字符串1后面的' \0 '取消,只在新串最后保留' \0 '。

④strcpy和strncpy函数

字符串复制函数

其一般形式为

strcpy(字符数组1,字符串2)

strcpy是STRingCoPY(字符串复制)的简写。它表示“字符串复制函数”,作用是将字符串2复制到字符数组1中去。例如:

char str1 [ 10 ],str2 [ ] = " China”;

strcpy ( strl,str2 );

执行后,strl的状态如下:

C h i n \0 \0 \0 \0 \0

说明:

( 1 )字符数组1必须定义得足够大,以便容纳被复制的字符串2。字符数组1的长度不应小于字符串2的长度。

( 2 )“字符数组1”必须写成数组名形式(如strl ),“字符串2”可以是字符数组名,也可以是一个字符串常量。例如:

strcpy ( strl , " China " ) ;作用与前面相同。( 3 )如果在复制前未对strl数组初始化或赋值,则str1各字节中的内容是无法预知的,复制时将str2中的字符串和其后的' \0 '一起复制到字符数组1中,取代字符数组1中的前面6个字符,最后4个字符并不一定是' \0 ',而是strl中原有的最后4个字节的内容。

( 4 )不能用赋值语句将一个字符串常量或字符数组直接给一个字符数组。字符数组名是一个地址常量,它不能改变值,正如数值型数组名不能被赋值一样。如下面两行都是不合法的:

strl = " China " ; / /企图用赋值语句将一个字符串常量直接赋给一个字符数组

strl = str2;/ /企图用赋值语句将一个字符数组直接赋给另一个字符数组

只能用strcpy函数将一个字符串复制到另一个字符数组中去。用赋值语句只能将一个字符赋给一个字符型变量或字符数组元素。如下面的语句是合法的:

char a [ 5 ],c1,c2;c1 = ' A ';

c2 = ' B ';

a [ 0 ] = ' C ' ;

a [ 1 ] = ' h ';

a [ 2 ] = ' i ';

a [ 3 ] = ' n ';

a [ 4 ] = ' a ';

( 5 )可以用strncpy函数将字符串2中前面n个字符复制到字符数组1中去。例如:

strncpy ( strl , str2 , 2 ) ;

作用是将str2中最前面2个字符复制到str1中,取代strl中原有的最前面2个字符。但是复制的字符个数n不应多于strl中原有的字符(不包括' \0 ')。

 

相关文章:

  • 四旋翼控制入门笔记
  • 国内USB IP商业解决方案新选择:硬件USB Server
  • [中国版 Cursor ]?!CodeBuddy快捷搭建个人展示页面指南
  • 在SQL Server中调整查询超时j解决方案
  • 大模型交叉研讨课笔记-Transformer架构
  • 化工行业专利管理系统:全流程解决方案解析
  • React Native 与 Expo
  • 贝叶斯优化Transformer融合支持向量机多变量时间序列预测,Matlab实现
  • 按键精灵ios脚本新增元素功能助力辅助工具开发(二)
  • Python爬虫如何应对网站的反爬加密策略?
  • AI工具分享篇 | recraft.ai + figma 复刻技术路线图
  • web 自动化之 PO 设计模式详解
  • 物理:篮球为什么能被拍起来?
  • window 显示驱动开发-创建分配时指定段
  • 实物工厂零件画图案例(上)
  • git merge和git rebase
  • 【Qt】qss语法详解
  • 基于单片机的视力保护仪设计与实现
  • Elecron 相关介绍以及常见的面试问题
  • 18.Excel数据透视表:第1部分创建数据透视表
  • 中东睿评|特朗普中东三国行:喧嚣的形式与空洞的实质
  • 硅料收储挺价“小作文”发酵光伏板块罕见大涨,知情人士:确实在谈
  • 科创板年内第3家!健信超导IPO获受理,拟募资8.65亿
  • 上海“量子城市”先导应用场景落地曹杨社区,提供哪些服务?
  • 白宫启动“返乡计划” ,鼓励非法移民自愿离开美国
  • 国家主席习近平会见斯洛伐克总理菲佐