迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > C语言 >

C 语言中检查字符串是否包含子字符串

作者:迹忆客 最近更新:2023/03/30 浏览次数:

本文将介绍几种在 C 语言中检查一个字符串是否包含给定子字符串的方法。


使用 strstr 函数来检查一个字符串是否包含 C 语言中的子字符串

strstr 函数是 C 标准库字符串工具的一部分,它被定义在 <string.h> 头中。该函数接受两个 char 指针参数,第一个表示要搜索的字符串,另一个表示要搜索的字符串。它找到给定子字符串的第一个起始地址,并返回对应的 char 指针。如果在第一个参数字符串中没有找到子字符串,则返回 NULL 指针。

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

const char *tmp = "This string literal is arbitrary";

int main(int argc, char *argv[]){
    char *ret;

    ret = strstr(tmp, "literal");
    if (ret)
        printf("found substring at address %p\n", ret);
    else
        printf("no substring found!\n");

    exit(EXIT_SUCCESS);
}

输出:

found substring at address 0x55edd2ecc014

使用 strcasestr 函数检查字符串是否包含子字符串

strcasestr 并不是标准库功能的一部分,但它是作为 GNU C 库的一个扩展来实现的,可以用 _GNU_SOURCE 宏定义来表示。定义后,我们就可以调用 strcasestr 函数来查找给定子字符串的首次出现。但请注意,这个函数会忽略两个字符串的大小写。

#define _GNU_SOURCE
#include <stdlib.h>
#include <string.h>
#include <stdio.h>

const char *tmp = "This string literal is arbitrary";

int main(int argc, char *argv[]){
    char *ret;

    ret = strcasestr(tmp, "LITERAL");
    if (ret)
        printf("found substring at address %p\n", ret);
    else
        printf("no substring found!\n");

    exit(EXIT_SUCCESS);
}

输出:

found substring at address 0x55edd2ecc014

使用 strncpy 函数复制一个子字符串

或者,可以使用 strncpy 函数将给定的子字符串复制到一个新的缓冲区。它需要三个参数,第一个参数是目标 char 指针,复制的子字符串将被存储在那里,第二个参数是源字符串,最后一个参数表示复制的第一个字节数。第二个参数是源字符串,最后一个参数表示最多复制的第一个字节数。请注意,如果在源字符串的第一个字节中没有找到空字节,那么目标字符串就不会以空结束。

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

const char *tmp = "This string literal is arbitrary";

int main(int argc, char *argv[]){
    char *str = malloc(strlen(tmp));

    printf("%s\n", strncpy(str, tmp, 4));
    printf("%s\n", strncpy(str, tmp + 5, 10));

    free(str);
    exit(EXIT_SUCCESS);
}

输出:

This
string lit

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

MySQL 中将字符串附加到现有字段

发布时间:2023/05/08 浏览次数:63 分类:MySQL

本文我们将学习使用 CONCAT() 和 CONCAT_WS() 函数在 MySQL 字段中连接或附加字符串值。使用 CONCAT() 和 CONCAT_WS() 将字符串附加到 MySQL 中的现有字段

MySQL 将字符串拆分成行

发布时间:2023/05/08 浏览次数:68 分类:MySQL

在本文中,我们将讨论什么是将字符串拆分为行以及如何创建一个自执行函数。 我们主要讨论 SUBSTRING_INDEX() 方法以及一些示例以轻松理解该概念。

在 C 语言中获取字符数组的长度

发布时间:2023/05/07 浏览次数:166 分类:C语言

本文演示了如何在 C 语言中获取一个 char 数组的长度。使用 sizeof 运算符来查找字符数组的长度 数组的大小可以用 sizeof 运算符计算,而不考虑元素的数据类型。

在 C 中创建格式化字符串

发布时间:2023/05/06 浏览次数:68 分类:C语言

这是一篇关于在 C 编程语言中格式化字符串的紧凑文章。本文讨论如何使用 C 语言格式化字符串,就像我们在 printf() 函数中所做的那样。

GoLang 如何将文件读入字符串

发布时间:2023/04/27 浏览次数:189 分类:Go

Go语言提供了很多文件操作工具,其中之一就是如何将文件读入字符串。 ioutil.ReadFile() 、File.Read() 、buf.ReadFrom() 和 strings.Builder 只是可用于高效地将文件内容写入字符串的几种方法。

在 Go 中获取结构体的字符串表示

发布时间:2023/04/27 浏览次数:123 分类:Go

Go 允许我们使用多种简单的标准方法从结构中序列化数据。在 Go 中使用 String 方法将结构体转换为字符串

在 Python 中获取字符串的一部分

发布时间:2023/04/24 浏览次数:69 分类:Python

本文将研究如何在 Python 中获取字符串的一部分。 在某些情况下,我们需要在 Python 中获取原始字符串的某些字母或元素。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便