【c语言】字符串常见函数 下

🎈个人主页:甜美的江
🎉欢迎 👍点赞✍评论⭐收藏
🤗收录专栏:c语言
🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共同学习、交流进步!

【c语言】字符串常见函数 下

  • 一、字符串搜索函数
    • 1.1 strchr (String Character):
    • 1.2 strrchr (String Reverse Character):
    • 1.3 strstr (String Search):
  • 二、字符串长度函数
    • 2.1 strlen (String Length):
  • 三、字符串分割函数
    • 3.1 strtok (String Tokenizer):

引言:

在C语言中,处理字符串是一项常见且重要的任务。为了有效地操作字符串,C语言提供了许多内置的字符串处理函数。

本文将介绍一些常见的C语言字符串函数,包括字符串搜索函数、字符串长度函数和字符串分割函数。

通过了解这些函数的用法和原理,你将能够更轻松地处理和操作字符串数据。

上半部分内容点这里。

【c语言】字符串常见函数 上

在这里插入图片描述

一、字符串搜索函数

当在C语言中需要在字符串中搜索特定字符或子字符串时,可以使用以下几个常见的字符串搜索函数:strchr、strrchr 和 strstr。下面将详细介绍它们的用法、示例以及注意事项。

1.1 strchr (String Character):

用法:

strchr 函数用于在字符串中查找指定字符的第一个匹配项,并返回该字符所在位置的指针。如果未找到指定字符,则返回 NULL。

示例:

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

int main() {
    char str[] = "hello world";
    char *ptr;

    ptr = strchr(str, 'o');

    if (ptr != NULL) {
        printf("Found at position: %ld\n", ptr - str);
    } else {
        printf("Not found\n");
    }

    return 0;
}

结果:

Found at position: 4

代码分析:

这段C代码首先定义了一个字符数组 str 包含字符串 “hello world”。然后,通过调用 strchr 函数,在字符串中查找字符 ‘o’ 的第一次出现的位置,并将该位置的指针赋值给 ptr 变量。

接着,通过条件判断检查 ptr 是否为 NULL,如果不是,则表示找到了字符 ‘o’,并使用 printf 函数输出其在字符串中的位置(通过指针减法计算相对位置),否则输出 “Not found”。

最后,程序返回0,表示正常执行结束。

这段代码的作用是在字符串中查找字符 ‘o’ 的第一次出现位置,并输出结果。

在给定的示例字符串 “hello world” 中,字符 ‘o’ 第一次出现在位置 4(从零开始计数),因此输出结果为 “Found at position: 4”。

注意事项:

strchr 函数只返回第一个匹配项的指针,如果需要找到所有匹配项,可以使用循环遍历字符串。

注意处理返回值为 NULL 的情况,表示未找到匹配项。

1.2 strrchr (String Reverse Character):

用法:

strrchr 函数用于在字符串中查找指定字符的最后一个匹配项,并返回该字符所在位置的指针。如果未找到指定字符,则返回 NULL。

示例:

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

int main() {
    char str[] = "hello world";
    char *ptr;

    ptr = strrchr(str, 'o');

    if (ptr != NULL) {
        printf("Found at position: %ld\n", ptr - str);
    } else {
        printf("Not found\n");
    }

    return 0;
}

结果:

 Found at position: 7

代码分析:

这段C代码首先定义了一个字符数组 str 包含字符串 “hello world”。

然后,通过调用 strrchr 函数,在字符串中从右往左查找字符 ‘o’ 的最后一次出现的位置,并将该位置的指针赋值给 ptr 变量。

接着,通过条件判断检查 ptr 是否为 NULL,如果不是,则表示找到了字符 ‘o’,并使用 printf 函数输出其在字符串中的位置(通过指针减法计算相对位置),否则输出 “Not found”。

最后,程序返回0,表示正常执行结束。

这段代码的作用是在字符串中查找字符 ‘o’ 的最后一次出现位置,并输出结果。

在给定的示例字符串 “hello world” 中,字符 ‘o’ 最后一次出现在位置 7(从零开始计数),因此输出结果为 “Found at position: 7”。

注意事项:

strrchr 函数从字符串的末尾开始搜索,找到第一个匹配项后即停止搜索,返回该匹配项的指针。

处理返回值为 NULL 的情况,表示未找到匹配项。

1.3 strstr (String Search):

用法:

strstr 函数用于在字符串中查找指定子字符串的第一个匹配项,并返回该子字符串的指针。如果未找到子字符串,则返回 NULL。

示例:

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

int main() {
    char str[] = "hello world";
    char *ptr;

    ptr = strstr(str, "lo");

    if (ptr != NULL) {
        printf("Found at position: %ld\n", ptr - str);
    } else {
        printf("Not found\n");
    }

    return 0;
}

结果:

 Found at position: 3

代码分析:

这段C代码首先定义了一个字符数组 str 包含字符串 “hello world”。

然后,通过调用 strstr 函数,在字符串中查找子字符串 “lo” 的第一次出现的位置,并将该位置的指针赋值给 ptr 变量。

接着,通过条件判断检查 ptr 是否为 NULL,如果不是,则表示找到了子字符串 “lo”,并使用 printf 函数输出其在字符串中的位置(通过指针减法计算相对位置),否则输出 “Not found”。

最后,程序返回0,表示正常执行结束。

这段代码的作用是在字符串中查找子字符串 “lo” 的第一次出现位置,并输出结果。

在给定的示例字符串 “hello world” 中,子字符串 “lo” 第一次出现在位置 3(从零开始计数),因此输出结果为 “Found at position: 3”。
注意事项:

strstr 函数会从字符串中找到第一个匹配子字符串的位置,并返回该子字符串的指针。

处理返回值为 NULL 的情况,表示未找到匹配项。

这些函数是在C语言中常用的字符串搜索工具,可以根据具体需求选择合适的函数来实现字符串搜索功能。

二、字符串长度函数

当在C语言中需要获取字符串的长度时,可以使用 strlen 函数。下面将详细介绍 strlen 函数的用途、用法、示例以及注意事项。

2.1 strlen (String Length):

用途:

strlen 函数用于计算字符串的长度,即字符串中的字符个数,不包括字符串结束符(‘\0’)。

用法:

函数原型如下:

size_t strlen(const char *str);

参数 str:要计算长度的字符串。

返回值:返回字符串的长度。

示例:

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

int main() {
    char str[] = "hello world";
    size_t length;

    length = strlen(str);

    printf("Length of the string: %zu\n", length);

    return 0;
}

结果:

Length of the string: 11

代码分析:

这段C代码首先定义了一个字符数组 str 包含字符串 “hello world”。

然后,通过调用 strlen 函数获取字符串的长度,并将结果赋值给 length 变量。

接着,通过使用 printf 函数输出字符串的长度,格式化字符串中 %zu 是用于打印 size_t 类型的长度。

最后,程序返回0,表示正常执行结束。

这段代码的主要功能是计算并输出字符串 “hello world” 的长度。

在给定的示例中,字符串的长度为11,因此输出结果为 “Length of the string: 11”。

注意事项:

strlen 返回的是 size_t 类型的无符号整数,因此使用 %zu 格式说明符打印结果。

注意字符串中的结束符 \0 不计入计算长度,即返回值为字符串中字符的实际个数。

这是一个简单而常用的字符串操作函数,用于获取字符串的长度。在使用时,需要注意字符串的结尾必须是空字符 \0。如果字符串没有正确以空字符结尾,strlen 可能会导致未定义的行为。

因此,在使用 strlen 时,确保字符串是以空字符正确终止的。

三、字符串分割函数

strtok 函数用于在C语言中分割字符串。它允许你将一个字符串拆分成多个子字符串,根据指定的分隔符进行分割。
下面将详细介绍 strtok 函数的用途、用法、示例以及注意事项。

3.1 strtok (String Tokenizer):

用途:

strtok 用于将字符串拆分成一系列的标记(tokens),这些标记由用户指定的分隔符来定义。

每次调用 strtok,它返回下一个标记,直到字符串结束或者再没有其他标记为止。

用法:

函数原型如下:

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

参数 str:要分割的字符串,第一次调用时传入待分割的字符串,后续调用传入 NULL。

参数 delimiters:分隔符字符串,包含所有可能的分隔符。

返回值:返回下一个标记的指针,如果没有更多标记则返回 NULL。

示例:

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

int main() {
    char str[] = "apple,orange,banana";
    const char delimiters[] = ",";

    // 第一次调用
    char *token = strtok(str, delimiters);

    while (token != NULL) {
        printf("Token: %s\n", token);

        // 后续调用,传入NULL表示继续使用同一字符串
        token = strtok(NULL, delimiters);
    }

    return 0;
}

结果:

Token: apple
Token: orange
Token: banana

代码分析:

这段C代码首先定义了一个字符数组 str 包含字符串 “apple,orange,banana”,以及一个包含分隔符 “,” 的字符数组 delimiters。

然后,通过第一次调用 strtok 函数,将字符串 str 按照分隔符 “,” 进行分割,并返回第一个分割后的子字符串的指针,并将该指针赋值给 token 变量。

接着,通过一个 while 循环,不断检查 token 是否为 NULL,如果不是,则表示仍有未处理的子字符串,依次输出每个子字符串,并通过后续调用 strtok(NULL, delimiters)

继续获取下一个分割后的子字符串,直到所有子字符串都被处理完毕。

最后,程序返回0,表示正常执行结束。

这段代码的作用是将字符串 “apple,orange,banana” 按照逗号进行分割,并输出每个分割后的子字符串。

输出结果为每个子字符串(apple、orange、banana)分别占一行。

注意事项:

strtok 在处理字符串时会修改原始字符串,将分隔符替换为 \0,因此需要谨慎使用,特别是当原始字符串是常量字符串时。

在多线程环境下,strtok 是不可重入的,因为它使用了静态变量来记录当前的解析位置。

如果字符串中有连续的分隔符,strtok 会将它们视为一个分隔符处理,因此可能返回空标记

四 总结:

本文介绍了C语言中的一些常见字符串函数,包括字符串搜索函数、字符串长度函数和字符串分割函数。

通过学习这些函数,我们可以在C语言中更加灵活和高效地处理字符串数据。

字符串搜索函数 strchr、strrchr 和 strstr 可以帮助我们在字符串中查找特定字符或子字符串的位置。

字符串长度函数 strlen 能够准确地计算字符串的长度,为字符串操作提供了基础。

字符串分割函数 strtok 则能够将字符串按照指定的分隔符进行分割,提取出其中的子字符串。

通过掌握这些字符串函数的使用方法,我们可以更加高效地编写C语言程序,并处理各种字符串操作需求。

这篇文章到这就结束啦

谢谢大家的阅读!

如果觉得这篇博客对你有用的话,别忘记三连哦。

我是甜美的江,让我们我们下次再见

在这里插入图片描述

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

文生图提示词:视角选择

构图和视角 --视角选择 Perspective Choices 涵盖从基本的摄影视角到更复杂和专业的视角技巧&#xff0c;展示了在视觉艺术创作中可以采用的多样化视角选择。 Eye Level 眼平线视角 High Angle 高角度 Low Angle 低角度 Birds Eye View 鸟瞰视角 Worms Eye View 虫视视角 Front…

【51单片机】直流电机驱动(PWM)(江科大)

1.直流电机介绍 直流电机是一种将电能转换为机械能的装置。一般的直流电机有两个电极,当电极正接时,电机正转,当电极反接时,电机反转 直流电机主要由永磁体(定子)、线圈(转子)和换向器组成 除直流电机外,常见的电机还有步进电机、舵机、无刷电机、空心杯电机等 2.电机驱动…

使用UMAP降维可视化RAG嵌入

大型语言模型&#xff08;LLMs&#xff09;如 GPT-4 已经展示了出色的文本理解和生成能力。但它们在处理领域特定信息方面面临挑战&#xff0c;比如当查询超出训练数据范围时&#xff0c;它们会产生错误的答案。LLMs 的推理过程也缺乏透明度&#xff0c;使用户难以理解达成结论…

Qt之条件变量QWaitCondition详解

QWaitCondition内部实现结构图&#xff1a; 相关系列文章 C之Pimpl惯用法 目录 1.简介 2.示例 2.1.全局配置 2.2.生产者Producer 2.3.消费者Consumer 2.4.测试例子 3.原理分析 3.1.辅助函数CreateEvent 3.2.辅助函数WaitForSingleObject 3.3.QWaitConditionEvent …

C++笔记1:操纵符输入输出

C操纵符用来控制输出控制&#xff0c;一是输出的形式&#xff0c;二是控制补白的数量和位置。本文记录一下&#xff0c;在一些笔试的ACM模式可能有用。其中1-4节的部分是关于格式化输入输出操作&#xff0c;5-6节的部分是关于未格式化输入输出操作。 1. 控制布尔值的格式 一般…

uniapp API文档地址 以及 HBuilder安装

uniapp API文档地址 以及 HBuilder安装 一、进入 当前网站 uni-app 官网 [uni-app](https://zh.uniapp.dcloud.io/quickstart-hx.html)二、点击截图下载文件 三、 进入 当前网站 &#xff08;https://www.dcloud.io/hbuilderx.html&#xff09; 浏览器会识别 也可以自行选择…

基于GIS、RS、VORS模型、CCDM模型、geodetecto、GWR模型集成的生态系统健康的耦合协调分析

详情点击公众号&#xff1a;技术科研吧 链接&#xff1a;基于GIS、RS、VORS模型、CCDM模型、geodetecto、GWR模型集成的生态系统健康的耦合协调分析 前沿 当空间大数据、云计算与人工智能发生碰撞,地理服务产业也不断发生变革与进步。ArcGIS Pro 是一个专业的桌面 GIS 应用程…

17 外排序

排序分为内排序和外排序&#xff0c;内排序是在内存中的排序。外排序指在磁盘中文件的排序&#xff0c;因为在磁盘中&#xff0c;不能进行下标访问&#xff0c;归并排序经常用于磁盘中文件的排序 假如有10亿个整形数据在磁盘中&#xff0c;要对它排序&#xff0c;内存中只有1G…

水果FL Studio21.2最新中文版功能特点介绍

FL Studio 21的特点和优势包括&#xff1a; 丰富的主题换肤&#xff1a;用户可以通过调整色调、饱和度、亮度、文本、仪表和步进序列器的颜色&#xff0c;来个性化定制FL Studio 21的外观&#xff0c;使其更符合个人审美或工作风格。更快的音频编辑&#xff1a;FL Studio 21集…

AI少女/HS2甜心选择2 仿剑三剑灵人物卡全合集打包

AI少女/HS2甜心选择2 仿剑三剑灵人物卡全合集打包 内含&#xff1a;菩提禅音[剑网3]明教晓天喵姐[剑3]明教晓天喵姐无帽版[剑3]茱莉亚[剑灵] 下载地址&#xff1a; https://www.changyouzuhao.cn/12492.html

软件价值12-射箭游戏

射箭游戏&#xff0c;按空格键发射&#xff0c;打击移动靶&#xff0c;左上角显示成绩状态。 代码&#xff1a; import pygame import sys import random# 初始化Pygame pygame.init()# 设置窗口大小 SCREEN_WIDTH 800 SCREEN_HEIGHT 600 screen pygame.display.set_mode((…

【开源】基于JAVA+Vue+SpringBoot的就医保险管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 科室档案模块2.2 医生档案模块2.3 预约挂号模块2.4 我的挂号模块 三、系统展示四、核心代码4.1 用户查询全部医生4.2 新增医生4.3 查询科室4.4 新增号源4.5 预约号源 五、免责说明 一、摘要 1.1 项目介绍 基于JAVAVue…

DS:树及二叉树的相关概念

创作不易&#xff0c;兄弟们来波三连吧&#xff01;&#xff01; 一、树的概念及结构 1.1 树的概念 树是一种非线性的数据结构&#xff0c;它是由n&#xff08;n>0&#xff09;个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树&#xff0c…

利用Cloudflare Workers实现网页状态监控

首先 Fork cf-workers-status-page 浏览器地址栏输入 https://deploy.workers.cloudflare.com/?urlhttps://github.com/$YourUserName/cf-workers-status-page 获取 Cloudflare 账户内的 Account ID 和 API Token 授权的 token 需要 workes 的编辑权限 在 Github actio…

LeetCode二叉树的垂序遍历

题目描述 给你二叉树的根结点 root &#xff0c;请你设计算法计算二叉树的 垂序遍历 序列。 对位于 (row, col) 的每个结点而言&#xff0c;其左右子结点分别位于 (row 1, col - 1) 和 (row 1, col 1) 。树的根结点位于 (0, 0) 。 二叉树的 垂序遍历 从最左边的列开始直到…

DolphinScheduler安装与配置

DolphinScheduler概述 Apache DolphinScheduler是一个分布式、易扩展的可视化DAG工作流任务调度平台。致力于解决数据处理流程中错综复杂的依赖关系&#xff0c;使调度系统在数据处理流程中开箱即用。 DolphinScheduler的主要角色如下&#xff1a; MasterServer采用分布式无…

CPython:表达式的求值顺序(evaluation order)

相关阅读 Pythonhttps://blog.csdn.net/weixin_45791458/category_12403403.html?spm1001.2014.3001.5482 C中表达式的求值 C语言针对表达式的计算&#xff0c;设置了操作符的优先级和结合性这两个特性&#xff0c;优先级用于解析不同优先级的符号&#xff0c;结合性用于解析…

【基础】第K大与第K小数

说明 给定一个长度为N(0< n< 10000)的序列&#xff0c;保证每一个序列中的数字a[i]是正整数 &#xff0c;编程要求求出整个序列中第k大的数字减去第k小的数字的值m&#xff0c;并判断m是否为质数。(0< k< n) 输入数据 第一行为2个数n&#xff0c;k&#xff08;…

【北邮鲁鹏老师计算机视觉课程笔记】10 Classification 分类

【北邮鲁鹏老师计算机视觉课程笔记】10 Classification 分类 1 图像识别的基本范式 检测问题&#xff1a;不仅要知道有没有&#xff0c;还要知道在哪里 分类是整图级标签&#xff0c;检测是区域级标签&#xff0c;分割是像素级标签 2 检测任务的应用 3 单实例识别与类别识别…

《Linux 简易速速上手小册》第3章: 文件系统与权限(2024 最新版)

文章目录 3.1 Linux 文件系统结构3.1.1 重点基础知识3.1.2 重点案例&#xff1a;设置一个 Web 服务器3.1.3 拓展案例 1&#xff1a;日志文件分析3.1.3 拓展案例 2&#xff1a;备份用户数据 3.2 理解文件权限3.2.1 重点基础知识3.2.2 重点案例&#xff1a;共享项目文件夹3.2.3 拓…