C语言中的字符串操作函数:深入探索string.h头文件

字符串操作函数:string.h

在C语言中,string.h是一个标准头文件,提供了许多用于操作字符串的函数。这些函数对于处理字符串、拷贝、连接和搜索等操作非常有用。本篇博客将详细介绍string.h头文件中的一些主要函数,并且使用C语言进行举例说明。

目录

1.	strlen() - 计算字符串长度
2.	strcpy() - 复制字符串
3.	strcat() - 连接字符串
4.	strcmp() - 比较字符串
5.	strstr() - 在字符串中搜索子串
6.	strtok() - 字符串分割

strlen()

函数原型

size_t strlen(const char *str);

描述

strlen()函数用于计算字符串的长度,即字符串中非空字符的数量,不包括空字符(’\0’)在内。

示例

#include <stdio.h>
#include <string.h>

int main()
{
char str[] = “Hello, World!”;
size_t len = strlen(str);
printf(“字符串”%s"的长度是:%zu\n", str, len);
return 0;
}

输出:

字符串"Hello, World!"的长度是:13

strcpy()

函数原型

char *strcpy(char *dest, const char *src);

描述

strcpy()函数用于将源字符串复制到目标字符串中,直到遇到空字符(’\0’)为止。

示例

#include <stdio.h>
#include <string.h>

int main()
{
char src[] = “Hello, World!”;
char dest[20];
strcpy(dest, src);
printf(“目标字符串:”%s"\n", dest);
return 0;
}

输出:

目标字符串:“Hello, World!”

strcat()

函数原型

char *strcat(char *dest, const char *src);

描述

strcat()函数用于将源字符串追加到目标字符串的末尾,直到遇到空字符(’\0’)为止。

示例

#include <stdio.h>
#include <string.h>

int main()
{
char dest[20] = “Hello, “;
char src[] = “World!”;
strcat(dest, src);
printf(“目标字符串:”%s”\n”, dest);
return 0;
}

输出:

目标字符串:“Hello, World!”

strcmp()

函数原型

int strcmp(const char *str1, const char *str2);

描述

strcmp()函数用于比较两个字符串。如果两个字符串相同,返回0;如果第一个字符串大于第二个字符串,返回一个正数;如果第一个字符串小于第二个字符串,返回一个负数。

示例

#include <stdio.h>
#include <string.h>

int main()
{
char str1[] = “apple”;
char str2[] = “orange”;
int result = strcmp(str1, str2);

if (result == 0) 
{printf("两个字符串相同\n");
} 
else if (result > 0) 
{printf("%s 排在 %s 后面\n", str1, str2);
} 
else 
{printf("%s 排在 %s 前面\n", str1, str2);
}return 0;

}

输出:

apple 排在 orange 前面

strstr()

函数原型

char *strstr(const char *haystack, const char *needle);

描述

strstr()函数用于在一个字符串中搜索另一个子串。如果找到子串,返回子串在原始字符串中的地址;如果找不到,返回NULL。

示例

#include <stdio.h>
#include <string.h>

int main()
{
char str[] = “Hello, World!”;
char sub[] = “World”;
char *result = strstr(str, sub);

if (result != NULL) 
{printf("找到子串 \"%s\",位置在 %ld\n", sub, result - str);
} 
else 
{printf("未找到子串 \"%s\"\n", sub);
}return 0;

}

输出:

找到子串 “World”,位置在 7

strtok()

函数原型

char *strtok(char *str, const char *delimiters);

描述

strtok()函数用于将一个字符串分割成多个子串。第一次调用时传入原始字符串和分隔符字符串,之后每次调用传入NULL作为第一个参数,可以依次获取每个子串。

示例

#include <stdio.h>
#include <string.h>

int main()
{
char str[] = “apple,orange,banana,grape”;
const char delimiters[] = “,”;
char *token = strtok(str, delimiters);

while (token != NULL) 
{printf("子串: %s\n", token);token = strtok(NULL, delimiters);
}return 0;

}

输出:

子串: apple
子串: orange
子串: banana
子串: grape

以上就是string.h头文件中常用的一些字符串操作函数的详细介绍。它们是C语言中处理字符串的重要工具,在日常开发中非常实用。希望这篇博客能帮助您更好地理解和使用这些函数。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/20759.shtml

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

相关文章

【JS】浏览器不同窗口、标签页或 iframe之间的通讯 - 技术的尽头是魔术

效果 左上↖地址: http://127.0.0.1:5500/index.html 左下↙地址: http://127.0.0.1:5500/index.html?hidden 右上↗地址: http://127.0.0.1:5500/index.html?hidden 右下↘地址: http://127.0.0.1:5500/index.html?hidden index.html <!DOCTYPE html> <html>…

使用自适应去噪在线顺序极限学习机预测飞机发动机剩余使用寿命(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

搜索与图论(三)

一、最小生成树 1.1Prim算法 朴素版Prim 一般用于稠密图 算法流程: 集合表示当前已经在连通块的点 1.初始化距离&#xff0c;把所有距离都初始化为正无穷 2.n次迭代,找到集合外距离最小的点 ->t 3.用t来更新其它点到集合的距离 #include<iostream> #include&…

小红书博主排名丨狂揽近百万粉丝,女性议题成“爆款制造机”?

从上野千鹤子和北大女生的对谈&#xff0c;到电影《消失的她》&#xff0c;再到引爆“粉色狂潮”的电影《芭比》&#xff0c;近年来&#xff0c;女性话题、两性情感话题成为社会热门议题。“踩过恋爱所有坑&#xff0c;想给姑娘撑把伞”&#xff0c;近期&#xff0c;小红书博主…

Qt tabwidget中插入widget

一、简单介绍 QT->tabWidget&#xff1a;标签页面。 在ui中通过工具栏自定义拉取控件&#xff0c;其中tabwidget可以可以创建多个标签页面&#xff0c;默认生成两个tab_widget(tab_1/tab_2)。并且可以在ui中右键自由添加控制删除等标签页&#xff0c;切换标签页就是切换widg…

Greenplum集群部署

一,安装说明 1.1环境说明 *名称**版本*操作系统CentOS 7.6 64bitgreenplumgreenplum-db-6.10.1-rhel7-x86_64.rpm1.2集群介绍 IPhostname集群节点10.240.3.244gpmastermaster10.240.3.245gpsegment1segment10.240.3.246gpsegment2segment二,安装环境准备 2.1 修改各节点名称…

Uniapp_app端使用重力感应实现横屏竖屏自动切换

1、进入页面默认是竖屏当手机横着的时候页面也跟着横着 进入页面开启定时器调用相关api去触发横屏竖屏&#xff0c;主要核心代码都在onShow()里面和onHide()里 <template> <view class"monitor"><u-no-network></u-no-network><web-view …

基于组合双向拍卖的共享储能机制研究(Matlab代码实现)

目录 &#x1f4a5;1 概述 &#x1f4da;2 运行结果 2.1 算例数据 2.2 买家中标 2.3 卖家中标 &#x1f389;3 文献来源 &#x1f308;4 Matlab代码实现 &#x1f4a5;1 概述 文献来源&#xff1a; 摘要&#xff1a;为满足共享储能中储能用户的互补性和替代性需求、解决常规单…

一文说清楚支付架构

作者&#xff1a;陈斌 支付的技术架构是为了保障能够顺利处理支付请求而设计的结构体系。从系统的角度看&#xff0c;它包括了计算机系统的软件、硬件、网络和数据等。从参与的主体角度来看&#xff0c;它涉及交易的付款方、收款方、支付机构、银行、卡组织和金融监管机构等。要…

无涯教程-Lua - while语句函数

只要给定条件为真&#xff0c;Lua编程语言中的 while 循环语句就会重复执行目标语句。 while loop - 语法 Lua编程语言中 while 循环的语法如下- while(condition) dostatement(s) end while loop - 流程图 在这里&#xff0c;需要注意的关键是 while 循环可能根本不执行。…

SOC FPGA之流水灯设计

一、DS-5简介 Altera Soc EDS开发套件的核心是Altera版ARM Development Studio 5(DS-5)工具包&#xff0c;为SoC器件提供了完整的嵌入式开发环境、FPGA自适应调试和对Altera工具的兼容。 1.1 DS-5 eclipse破解 首先下载破解器 然后进入cmd运行&#xff0c;进入到破解器所在文…

XCode升级后QT无法编译的问题

原因是SDK的版本变了&#xff0c;Qt配置的版本要修改。 解决办法如下&#xff1a; 1.找到 /Users/*/Qt/5.15.2/clang_64/mkspecsqdevice.pri 这个文件打开编辑&#xff0c; 在文件末尾追加一句 !host_build:QMAKE_MAC_SDKmacosx13.1 至于这个版本号13.1是怎么来的呢&#xff1…

kafka简介

kafka是什么&#xff1f; Kafka最初采用Scala语言开发的一个多分区、多副本并且基于ZooKeeper协调的分布式消息系统。目前Kafka已经定位为一个分布式流式处理平台&#xff0c;它的特性有高吞吐、可持久化、可水平扩展、支持流处理。 Apache Kafka是一个分布式的发布-订阅消息系…

no_new_privs

kernel.org/doc/Documentation/prctl/no_new_privs.txt Linux Capabilities 入门教程&#xff1a;基础实战篇 - 知乎 (zhihu.com)

两数之和 LeetCode热题100

题目 给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标值 target 的那 两个 整数&#xff0c;并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是&#xff0c;数组中同一个元素在答案里不能重复出现。 你可以按任意顺…

Kubernetes高可用集群二进制部署(三)部署api-server

Kubernetes概述 使用kubeadm快速部署一个k8s集群 Kubernetes高可用集群二进制部署&#xff08;一&#xff09;主机准备和负载均衡器安装 Kubernetes高可用集群二进制部署&#xff08;二&#xff09;ETCD集群部署 Kubernetes高可用集群二进制部署&#xff08;三&#xff09;部署…

代理模式--静态代理和动态代理

1.代理模式 定义&#xff1a;代理模式就是代替对象具备真实对象的功能&#xff0c;并代替真实对象完成相应的操作并且在不改变真实对象源代码的情况下扩展其功能&#xff0c;在某些情况下&#xff0c;⼀个对象不适合或者不能直接引⽤另⼀个对象&#xff0c;⽽代理对象可以在客户…

抄写Linux源码(Day3:启动南大OS)

我们可以尝试启动南大OS&#xff0c;接着阅读南大OS源码&#xff0c;看看 JYY/YZH 构建主引导扇区的手段 &#xff08;注意&#xff1a;我使用的是南大2023年的 OS 实验代码&#xff09; https://jyywiki.cn/OS/2023/labs/Labs 首先&#xff0c;根据 JYY 的文档&#xff0c;…

力扣 C++|一题多解之动态规划专题(1)

动态规划 Dynamic Programming 简写为 DP&#xff0c;是运筹学的一个分支&#xff0c;是求解决策过程最优化的过程。20世纪50年代初&#xff0c;美国数学家贝尔曼&#xff08;R.Bellman&#xff09;等人在研究多阶段决策过程的优化问题时&#xff0c;提出了著名的最优化原理&…

PHP8的数据类型转换-PHP8知识详解

什么是数据类型转换&#xff1f; 答&#xff1a;数据从一个类型转换成另外一个类型&#xff0c;就是数据类型转换。 在PHP8中&#xff0c;变量的类型就是由赋值决定的&#xff0c;也就是说&#xff0c;如果 string 赋值给 $var&#xff0c;然后 $var 的类型就是 string。之后…