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

【时时三省】(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 ')。

 

http://www.xdnf.cn/news/5790.html

相关文章:

  • 基于Spring Boot+Layui构建企业级电子招投标系统实战指南
  • 人脸识别系统中的隐私与数据权利保障
  • ‌OPE.AI开放平台:一站式企业AI应用引擎
  • 前端学习(2)—— CSS详解与使用
  • centos7.x下,使用宝塔进行主从复制的原理和实践
  • 博客系统技术需求文档(基于 Flask)
  • R语言绘图 | 渐变火山图
  • Leetcode 3548. Equal Sum Grid Partition II
  • Andorid之TabLayout+ViewPager
  • 通过POI实现对word基于书签的内容替换、删除、插入
  • 网络协议与系统架构分析实战:工具与方法全解
  • 【应用密码学】实验五 公钥密码2——ECC
  • 深入 MySQL 查询优化器:Optimizer Trace 分析
  • 初入OpenCV
  • 【Qt】qss语法详解
  • [250512] Node.js 24 发布:ClangCL 构建,升级 V8 引擎、集成 npm 11
  • MapReduce 模型
  • AI 模型训练轻量化技术在军事领域的实战应用与技术解析
  • Excelize 开源基础库发布 2.9.1 版本更新
  • ThingsBoard使用Cassandra部署时性能优化
  • c++进阶——哈希表的实现
  • Linux进程信号处理(26)
  • Maven 动态插件配置:Profile的灵活集成实践
  • 小白成长之路-vim编辑
  • 阿克曼-幻宇机器人系列教程2- 机器人交互实践(Topic)
  • 快速上手Linux nfs网络文件系统
  • 仿正点原子驱动BMP280气压传感器实例
  • 3335. 字符串转换后的长度 I
  • Babylon.js学习之路《四、Babylon.js 中的相机(Camera)与视角控制》
  • MySQL基本查询