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

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

引言:

在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语言程序,并处理各种字符串操作需求。

这篇文章到这就结束啦

谢谢大家的阅读!

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

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

在这里插入图片描述

在这里插入图片描述

  • 46
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 32
    评论
东南亚位于我国倡导推进的“一带一路”海陆交汇地带,作为当今全球发展最为迅速的地区之一,近年来区域内生产总值实现了显著且稳定的增长。根据东盟主要经济体公布的最新数据,印度尼西亚2023年国内生产总值(GDP)增长5.05%;越南2023年经济增长5.05%;马来西亚2023年经济增速为3.7%;泰国2023年经济增长1.9%;新加坡2023年经济增长1.1%;柬埔寨2023年经济增速预计为5.6%。 东盟国家在“一带一路”沿线国家中的总体GDP经济规模、贸易总额与国外直接投资均为最大,因此有着举足轻重的地位和作用。当前,东盟与中国已互相成为双方最大的交易伙伴。中国-东盟贸易总额已从2013年的443亿元增长至 2023年合计超逾6.4万亿元,占中国外贸总值的15.4%。在过去20余年中,东盟国家不断在全球多变的格局里面临挑战并寻求机遇。2023东盟国家主要经济体受到国内消费、国外投资、货币政策、旅游业复苏、和大宗商品出口价企稳等方面的提振,经济显现出稳步增长态势和强韧性的潜能。 本调研报告旨在深度挖掘东南亚市场的增长潜力与发展机会,分析东南亚市场竞争态势、销售模式、客户偏好、整体市场营商环境,为国内企业出海开展业务提供客观参考意见。 本文核心内容: 市场空间:全球行业市场空间、东南亚市场发展空间。 竞争态势:全球份额,东南亚市场企业份额。 销售模式:东南亚市场销售模式、本地代理商 客户情况:东南亚本地客户及偏好分析 营商环境:东南亚营商环境分析 本文纳入的企业包括国外及印尼本土企业,以及相关上下游企业等,部分名单 QYResearch是全球知名的大型咨询公司,行业涵盖各高科技行业产业链细分市场,横跨如半导体产业链(半导体设备及零部件、半导体材料、集成电路、制造、封测、分立器件、传感器、光电器件)、光伏产业链(设备、硅料/硅片、电池片、组件、辅料支架、逆变器、电站终端)、新能源汽车产业链(动力电池及材料、电驱电控、汽车半导体/电子、整车、充电桩)、通信产业链(通信系统设备、终端设备、电子元器件、射频前端、光模块、4G/5G/6G、宽带、IoT、数字经济、AI)、先进材料产业链(金属材料、高分子材料、陶瓷材料、纳米材料等)、机械制造产业链(数控机床、工程机械、电气机械、3C自动化、工业机器人、激光、工控、无人机)、食品药品、医疗器械、农业等。邮箱:market@qyresearch.com

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 32
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值