C语言--12字符串处理函数

函数strstr

函数strchr与strrchr

  • 注意:
    1. 这两个函数的功能,都是在指定的字符串 s 中,试图找到字符 c。
    2. strchr() 从左往右找第一个,strrchr() 从左往右找最后一个。
    3. 字符串结束标记 ‘\0’ 被认为是字符串的一部分。

函数strlen

  • 示例:

char *s = "helloworld"; printf("helloworld的长度是:%d\n", strlen(s));

函数strcat与strncat

  • 注意:
    1. 这两个函数的功能,都是将 src 中的字符串,复制拼接到 dest 的末尾。
    2. strcat() 没有边界控制,因此可能会由于 src 的过长而导致内存溢出。
    3. strncat() 有边界控制,最多复制 n+1 个字符(其中最后一个是 ‘\0’ )到 dest 的末尾。

函数strtok

  • 注意:
    1. 该函数会将改变原始字符串 str,使其所包含的所有分隔符变成结束标记 ‘\0’ 。
    2. 由于该函数需要更改字符串 str,因此 str 指向的内存必须是可写的。
    3. 首次调用时 str 指向原始字符串,此后每次调用 str 用 NULL 代替。
#include <stdio.h>
#include <string.h>
int main() {
char str[] = "apple,banana,orange,grape";
char *token = strtok(str, ",");
while (token != NULL) {
printf("%s\n", token);
token = strtok(NULL, ","); // 继续分割
}
return 0;
}
/*
在上面的例子中,我们首先使用strtok函数将字符串str按照逗号分隔成多个子字符串,
然后使用while循环遍历每个子字符串,直到没有更多的子字符串为止。每次调用
strtok(NULL, ",")会继续从上一次分割的位置开始,直到分割完整个字符串。
*/

函数strcpy与strncpy

  • 注意:
    1. 这两个函数的功能,都是将 src 中的字符串,复制到 dest 中。
    2. strcpy() 没有边界控制,因此可能会由于 src 的过长而导致内存溢出。
    3. strncpy() 有边界控制,最多复制 n+1 个字符(其中最后一个是 ‘\0’ )到 dest 中。
    4. strcyp 函数的结束条件只有一个:遇到src中的结束符,因此有可能由于src过大导致异常退出
    5. strncpy 函数的结束条件有两个: 遇到src中的结束符 + 达到指定的大小N

函数strcmp与strncmp

  • 注意:
    • 比较字符串大小,实际上比较的是字符的 ASCII码值的大小。
    • 从左到右逐个比较两个字符串的每一个字符,当能“决出胜负”时立刻停止比较。
      • 返回值是第一个差异字符的差值
    • 结束条件:
      • strcmp 函数只有两个结束条件: 遇到结束符 + 遇到有差值
      • strncmp 函数只有三个结束条件: 遇到结束符 + 遇到有差值 + 达到n个字符

内存拷贝函数 memcpy

#include <string.h>void *memcpy(void *dest, const void *src, size_t n);参数分析:dest --> 拷贝到的目标地址src --> 需要拷贝的原始数据n --> 期望拷贝的字节数返回值:返回目标地址 dest 

该函数的结束条件只有一个,就是拷贝的字节数达到了用于的期望值 N 。内存中尽管全部都是结束符也会把这些结束符一一拷贝。

示例:

char msg [128] = "Hello Even Jacy GZ2407";
msg [5] = 0 ;  // 手动在Hello 后面添加了 结束符 \0char * map1 = calloc(1,128);
char * map2 = calloc(1,128);strncpy(map1 , msg ,  128 ); // 当遇到Hello 后面的结束符会停止工作
memcpy (map2 , msg , 128 ); // 会一直拷贝直到拷贝了128字节为止printf("map1:%s %s \n" , map1 , map1 +6 );
printf("map2:%s %s\n" , map2 , map2 +6);free(map1);
free(map2);

内存数据比较 memcmp

#include <string.h>int memcmp(const void *s1, const void *s2, size_t n);参数分析:s1 --> 需要比较的地址1   s2 --> 需要比较的地址2     n --> 期望比较的字节数返回值:返回两个内存间数据的差值(按字节比较)如果完全匹配则返回 差值0 如果不匹配则返回第一个差异点的差值 非零

该函数的结束条件只有一个,就是比较的字节数达到了用于的期望值 N 。内存中尽管全部都是结束符也会把这些结束符一一比较。它与strcmp的区别是strcmp 函数在遇到第一个结束符后会停止比较,后面的数据它无法比较。

总结:

所有的str开头的函数比如strstr \ strcpy \ strcmp.. 这些函数都会在遇到结束符时停止工作,因此在某些场合无法使用str进行某些操作,可以考虑mem开头的函数 比如 memcpy \ memcmp 。。。。

membarrier    memchr        memcpy        memfrob       memmove       memrchr       memusage
memalign      memccpy       memcmp        memfd_create  memmem        mempcpy       memset        
memusagestat

C库函数 - atoi()

 C 标准库 - 

描述

C 库函数 int atoi(const char *str) 把参数 str 所指向的字符串转换为一个整数(类型为int 型)。

声明

下面是 atoi()函数的声明。

int atoi(const char *str)

参数

  • str -- 要转换为整数的字符串。

返回值

该函数返回转换后的长整数,如果没有执行有效的转换,则返回零。

实例

下面的实例演示了 atoi()函数的用法。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{int val;char str[20];strcpy(str, "98993489");val = atoi(str);printf("字符串值= %s, 整型值 = %d\n", str, val);strcpy(str, "runoob.com");val = atoi(str);printf("字符串值= %s, 整型值 = %d\n", str, val);return (0);
}

让我们编译并运行上面的程序,这将产生以下结果:

字符串值 = 98993489, 整型值 = 98993489字符串值 = runoob.com, 整型值 = 0

结语:

        在本文中,我们深入探讨了C语言中的字符串处理函数及其重要性。从基本的字符串操作函数如 strlenstrcpystrcat 到更复杂的字符串搜索和比较函数,每个函数在处理字符数据时都扮演着不可或缺的角色。掌握这些函数不仅有助于我们提高编程的效率和可读性,还能让我们更好地理解内存管理和数据处理的底层机制。

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

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

相关文章

MATLAB求解0-1线性规划问题的详细分析

引言 0-1线性规划是整数规划中的一种特殊形式&#xff0c;它广泛应用于资源分配、工厂选址、投资组合优化、物流运输等多个领域。0-1线性规划的特点是&#xff0c;决策变量只能取0或1的离散值&#xff0c;通常用于描述“是-否”决策问题。随着计算机技术的发展&#xff0c;数学…

HTML 揭秘:HTML 编码快速入门

HTML 揭秘&#xff1a;HTML 编码快速入门 一 . 前端知识介绍二 . HTML 介绍三 . HTML 快速入门四 . HTML 编辑器 - VSCode4.1 插件安装4.2 修改主题配色4.3 修改快捷键4.4 设置自动保存4.5 创建 HTML 文件4.5 书写 HTML 代码4.6 常见快捷键 五 . 基础标签5.1 字体标签5.1.1 col…

2024年最佳本地营销策略的14个专家意见

本地营销对任何企业都很重要——无论您是市中心的夫妻店&#xff0c;还是大型全国连锁店。您都希望被寻找您产品或服务的人看到并找到&#xff0c;而他们通常是在本地搜索这些内容。事实上&#xff0c;几乎一半的Google搜索都有本地意图。 那么&#xff0c;今年哪些是最好的本…

重磅资源来袭。快看看有没有你要的那一款!

Java 相关的技能主要包括以下几个方面‌&#xff1a; 资源在末尾 ‌Java编程语言基础‌&#xff1a;这是Java开发的基础&#xff0c;包括熟悉Java的语法、数据类型、控制结构、异常处理、面向对象编程&#xff08;OOP&#xff09;等基本概念。‌Java EE和Spring框架‌&#x…

VBA 获取字段标题代码轻松搞定

hi&#xff0c;大家好&#xff01; 最近又有一段时间没和大家唠嗑了&#xff0c;最近也没有时间给大家开直播&#xff0c;天天忙&#xff0c;但不知道在忙啥&#xff01;那今天我们来讲点啥好玩的呢&#xff1f; 今天是老师节&#xff0c;那就先祝各位老师节日快乐&#xff0…

ROS第三梯:ROS+C++实现速腾Bag包的解析

解决问题&#xff1a;速腾Bag包利用bag_to_pcd生成的pcd文件字段名称存在问题&#xff0c;多了几个异常的"_"&#xff0c;导致强度属性无法在Intensity中显示。 解决方案&#xff1a;利用sensor_msgs库进行数据读取和转换成sensor_msgs::PointCloud格式&#xff0c;再…

拆分 IP 地址后再分类

Excel里有一列标准的IP v4地址&#xff1a; A110.12.20.30210.205.20.30310.178.20.30410.23.20.30510.167.20.30610.90.20.30710.134.20.30810.177.20.30910.200.20.301010.115.20.301110.48.20.301210.181.20.301310.224.20.301410.57.20.301510.180.20.301610.113.20.30171…

新手入门Python:魔法函数详解与应用

文章目录 📖 介绍 📖🏡 演示环境 🏡📒 文章内容 📒📝 什么是魔法函数?📝 基础魔法函数📝 运算符重载📝 高级魔法函数📝 综合应用示例⚓️ 相关链接 ⚓️📖 介绍 📖 在Python编程的世界里,有一类特别的函数,它们看似普通,却拥有神奇的力量。这些函…

《Python爬虫逆向实战》加密方法远程调用(RPC)

加密方法远程调用采用了RPC (Remote Procedure Call)协议&#xff0c;即远程过程调用协议。我们让浏览器充当客户端&#xff0c;并通过WebSocket将加密参数值发送给服务端(用Python写一个)&#xff0c;这样的话我们就不需要花费大量时间去逆向了。下面我们就通过一个微博登录示…

鸿蒙开发前景

在科技飞速发展的时代&#xff0c;鸿蒙操作系统的出现犹如一颗璀璨的新星&#xff0c;为全球科技领域带来了新的希望与机遇。那么&#xff0c;鸿蒙开发的前景究竟如何呢? 一、鸿蒙系统的独特优势 1. 分布式架构 鸿蒙操作系统采用分布式架构&#xff0c;能够实现不同设备之间的…

MC1496DR2G高性能平衡调制器/解调器的卓越之选

MC1496DR2G适用于输出电压为输入电压&#xff08;信号&#xff09;和开关功能&#xff08;载波&#xff09;的共同结果的场合。典型应用包括抑制载波和放大调制、同步检测、调频 (FM) 检测、相位检测和斩波器应用。 MC1496DR2G功能特性&#xff1a; 平衡式工作&#xff1a;具…

深度解析 | 二元Logistic回归模型(单因素筛查、软件操作及结果解读)

一、Logistic回归的类型 Logistic回归&#xff08;又称逻辑回归&#xff09;是一种广义的线性回归分析模型&#xff0c;用于研究分类型因变量与自变量之间影响关系。Logistic回归分析根据因变量的不同可分为二元Logistic回归、多分类Logistic回归&#xff0c;有序Logistic回归…

2024.9.9(极客大挑战 2019]EasySQL,[极客大挑战 2019]Knife)

题目一&#xff1a;极客大挑战 2019]EasySQL 1、点开题目链接&#xff0c;来到下面的界面 2、遇到这样的登录界面&#xff0c;先尝试admin和万能密码&#xff08;1 or 11#&#xff09;&#xff0c;拿到flag 题目二&#xff1a;[极客大挑战 2019]Knife 1、点开链接&#xff0c…

iText2KG:显著降低LLM构建知识图谱时的幻觉现象

1. 当前知识图谱构建存在的问题 知识图谱通过捕捉实体之间的关系来构建知识的结构化表示&#xff0c;在分析文本数据集和从结构化异构数据中推断知识方面具有显著优势。比如&#xff0c;知识图谱能够融合来自多个来源的不同数据&#xff0c;提供一个具有凝聚力的信息视角。还能…

12.2 案例分析专题-数据库设计

数据库设计 ER图 真题1 真题2 1

电脑D盘数据误删怎么恢复?一文教你轻松找回

在日常使用电脑的过程中&#xff0c;我们可能会不小心删除D盘中的重要数据&#xff0c;导致数据丢失。这时&#xff0c;不要慌张&#xff0c;本文将为你介绍几种Windows电脑系统上恢复D盘数据的方法&#xff0c;帮助你轻松找回丢失的数据。 图片来源于网络&#xff0c;如有侵权…

高级算法设计与分析 学习笔记4 二叉查找树

左子树小于父节点小于右子树。 那么如何构建一个二叉查找树呢&#xff1f; 如何遍历一颗树&#xff1f; 这个其实就是中序遍历&#xff08;在中间访问根节点&#xff09; 如何查找一个元素&#xff1f; 可以看到后面这种方法更好&#xff0c;虽然都是递归&#xff0c;但后者不…

还不知道MES和PLC咋通信?5分钟看懂

最近网上看到一些写MES和PLC通信的文章。或许因为行业不同的缘故吧&#xff0c;对于里面的一些观点&#xff0c;我个人是持保留意见的。首先在我所在行业里&#xff0c;MES是不会和PLC直接通信的。MES和PLC之间通常还有一个其他系统。该系统在不同行业的叫法不一样。比如有的行…

【828华为云征文|华为云Flexus X实例:一键助力中小企业,快速部署个性化网站!】

文章目录 前言搭建自己专属网站准备工作具体操作服务器环境确认进入宝塔软件商店JTBC网站内容管理系统一键部署填写域名放行80端口JTBC安装初始页数据库信息配置管理员信息配置完成安装网站管理后台网站前台 验证后台配置内容前台访问的效果 结语 前言 在云计算盛行的时代&…

“颂歌唱响 乐动云山”云山天地携手幸福金龄会举办七夕国风艺术展演活动

弘扬中华优秀传统文化&#xff0c;充分挖掘七夕内涵&#xff0c;倡导勤劳智慧、忠贞爱情、家庭美满、追求美好的价值理念&#xff0c;由云山天地主办&#xff0c;幸福金龄会指导&#xff0c;广州风暴文化传媒有限公司承办的“颂歌唱响 乐动云山”七夕国风文化艺术展演活动&…