【时时三省】(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.mzph.cn/bicheng/80847.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

构建可信数据空间需要突破技术、规则和生态三大关键

构建可信数据空间需要突破技术、规则和生态三大关键:技术上要解决"可用不可见"的隐私计算难题,规则上要建立动态确权和跨境流动的治理框架,生态上要形成多方协同的标准体系。他强调,只有实现技术可控、规则可信、生态协…

模板的使用

模板 模板的概念&#xff1a;模板就是建立一个通用的模具&#xff0c;大大提高复用性 c中模板机制分为两类 函数模板 建立一个通用函数&#xff0c;其函数返回值类型和形参类型可以不具体定制&#xff0c;用一个虚拟的类型来代表 template<typename T> //template 声…

YOLOv1:开启实时目标检测的新篇章

YOLOv1&#xff1a;开启实时目标检测的新篇章 在深度学习目标检测领域&#xff0c;YOLO&#xff08;You Only Look Once&#xff09;系列算法无疑占据着重要地位。其中&#xff0c;YOLOv1作为开山之作&#xff0c;以其独特的设计理念和高效的检测速度&#xff0c;为后续的目标…

vim中的查找

在 Vim 中&#xff0c;使用 n 键可以按正向&#xff08;向下&#xff09;继续查找下一个匹配项。若要反向&#xff08;向上&#xff09;查找&#xff0c;可以使用以下方法&#xff1a; 1. 使用 N 键反向查找 在查找命令&#xff08;如 /keyword&#xff09;后&#xff0c;按下…

卡尔曼滤波通俗理解

卡尔曼滤波器的目的与意义何在&#xff1f; - 陈不陈的回答 - 知乎 https://www.zhihu.com/question/41351736/answer/3057034500 这是一个比较通俗易懂的例子&#xff0c;读完之后可以对卡尔曼滤波怎么使用有比较直观的理解。 &#x1f9e0; 一、卡尔曼滤波是什么&#xff1f;…

对抗帕金森:在疾病阴影下,如何重掌生活主动权?

帕金森病&#xff0c;一种影响全球超 1000 万人的神经退行性疾病&#xff0c;正无声地改变着患者的生活轨迹。随着大脑中多巴胺分泌减少&#xff0c;患者逐渐出现肢体震颤、肌肉僵硬、步态迟缓等症状&#xff0c;甚至连扣纽扣、端水杯这类日常动作都变得艰难。更棘手的是&#…

黑马k8s(五)

1.Namespace 2.Pod run nginx&#xff1a;nginx是pod控制器的名称&#xff0c;不是pod的名称 查看pod更高的参数&#xff1a; 启动一个不存在的镜像&#xff1a;pod 查看 dev下面的pod&#xff0c;第二个pod处于容器创建的状态 查看pod的详情描述&#xff1a; 通过pod的ip&…

推荐算法工程化:ZKmall模板商城的B2C 商城的用户分层推荐策略

在 B2C 电商竞争激烈的市场环境中&#xff0c;精准推荐已成为提升用户体验、促进商品销售的关键。ZKmall 模板商城通过推荐算法工程化手段&#xff0c;深度挖掘用户数据价值&#xff0c;制定科学的用户分层推荐策略&#xff0c;实现 “千人千面” 的个性化推荐&#xff0c;帮助…

如何使用 Qwen3 实现 Agentic RAG?

今天&#xff0c;我们将学习如何部署由阿里巴巴最新Qwen 3驱动的Agentic RAG。 这里是我们的工具栈&#xff1a; CrewAI用于代理编排。 Firecrawl用于网络搜索。 LightningAI的LitServe用于部署。 顶部的视频展示了这一过程。 图表显示了我们的Agentic RAG流程&#xff1…

【UAP】《Empirical Upper Bound in Object Detection and More》

Borji A, Iranmanesh S M. Empirical upper bound in object detection and more[J]. arXiv preprint arXiv:1911.12451, 2019. arXiv-2019 文章目录 1、Background and Motivation2、Related Work3、Advantages / Contributions4、Experimental Setup4.1、Benchmarks Dataset…

LeetCode 941. 有效的山脉数组 java题解

https://leetcode.cn/problems/valid-mountain-array/description/ 双指针 class Solution {public boolean validMountainArray(int[] arr) {int lenarr.length;if(len<3) return false;int left0,rightlen-1;while(left1<len&&arr[left]<arr[left1]){left…

udp多点通信和心跳包

刷题 # UDP多点通信核心要点## 基础通信模式### 单播通信- 一对一通信方式- UDP默认通信模式- 地址指向具体目标主机### 广播通信- 一对多通信机制- 地址范围&#xff1a;xxx.xxx.xxx.255- 仅限局域网传输- 需设置SO_BROADCAST标志### 组播通信- 多对多群组通信- 地址范围&…

文件相关操作

文本文件 程序运行时产生的数据都属于临时数据&#xff0c;程序一旦运行结束都会被释放 通过文件可以将数据持久化 C的文件操作需要包含头文件 文件分类 文本文件&#xff1a;文件以文本的ASCII码形式存储在计算机中 二进制文件&#xff1a;文件以文本的二进制形式存储在计算…

[论文阅读]ControlNET: A Firewall for RAG-based LLM System

ControlNET: A Firewall for RAG-based LLM System [2504.09593] ControlNET: A Firewall for RAG-based LLM System RAG存在数据泄露风险和数据投毒风险。相关研究探索了提示注入和投毒攻击&#xff0c;但是在控制出入查询流以减轻威胁方面存在不足 文章提出一种ai防火墙CO…

C++中的各式类型转换

隐式转换&#xff1a; 基本类型的隐式转换&#xff1a; 当函数参数类型非精确匹配&#xff0c;但是可以转换的时候发生 如&#xff1a; void func1(double x){cout << x << endl; }void func2(char c){cout << c << endl; }int main(){func1(2);//…

2.重建大师输入输出数据格式介绍

摘要&#xff1a;本文主要介绍重建大师支持的输入数据格式及输出数据格式。 1.输入数据格式 1.1图像文件 重建大师支持JPG、JPEG和TIFF格式的照片。 不同架次照片放置于同级目录的不同文件夹&#xff0c;同一架次不同镜头拍摄得到的照片存放于不同的子文件夹&#xff0c;可使…

我们该如何使用DeepSeek帮我们减负?

在当今信息爆炸的时代&#xff0c;如何快速获取、筛选和分析信息已经成为各行各业的重要能力。而DeepSeek作为一种先进的智能搜索和信息挖掘工具&#xff0c;能够帮助用户快速找到所需的信息&#xff0c;并从海量数据中提取出有用的洞见。在这篇博文中&#xff0c;我们将深入探…

抗量子计算攻击的数据安全体系构建:从理论突破到工程实践

在“端 - 边 - 云”三级智能协同理论中&#xff0c;端 - 边、边 - 云之间要进行数据传输&#xff0c;网络的安全尤为重要&#xff0c;为了实现系统总体的安全可控&#xff0c;将构建安全网络。 可先了解我的前文&#xff1a;“端 - 边 - 云”三级智能协同平台的理论建构与技术实…

支付宝API-SKD-GO版

前言 支付宝api的sdk没有提供go版&#xff0c;这里自己封装了一个go版的sdk&#xff0c;有需要的朋友可以自取使用 支付宝 AliPay SDK for Go, 集成简单&#xff0c;功能完善&#xff0c;持续更新&#xff0c;支持公钥证书和普通公钥进行签名和验签。 Github地址 GitHub - …

JAVA研发+前后端分离,ZKmall开源商城B2C商城如何保障系统性能?

在电商行业竞争白热化的当下&#xff0c;B2C 商城系统的性能表现成为决定用户留存与商业成败的关键因素。ZKmall 开源商城凭借 Java 研发与前后端分离架构的深度融合&#xff0c;构建起一套高效、稳定且具备强大扩展性的系统架构&#xff0c;从底层技术到上层应用全方位保障性能…