用c语言实现strstr字符串,C语言实现库函数中的strstr查找字符串中的子串的功能...

#include static const char *strstr_t(const char *str, const char *sub_str)

{

const char *str_local = NULL;

const char *sub_str_local = NULL;

if(!str || !sub_str)

{

printf("fun:%s param is error\n", __FUNCTION__);

return NULL;

}

while(*str)

{

str_local = str;

sub_str_local = sub_str;

do

{

if(*sub_str_local == '\0')

{

return str;

}

}while(*str_local++ == *sub_str_local++);

str += 1;

}

return NULL;

}

int main(int argc, char **argv)

{

int i = 0;

char *str = NULL;

char *sub_str = NULL;

const char *sub = NULL;

printf("input param:\n");

for(i = 1; i < argc; i++)

{

printf("argv[%d]:%s\n", i, argv[i]);

}

str = argv[1];

sub_str = argv[2];

sub = strstr_t(str, sub_str);

if(sub)

{

printf("sub string:%s\n", sub);

}

else

{

printf("error\n");

}

return 0;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【优质项目推荐】 1、项目代码均经过严格本地测试,运行OK,确保功能稳定后才上传平台。可放心下载并立即投入使用,若遇到任何使用问题,随时欢迎私信反馈与沟通,博主会第一时间回复。 2、项目适用于计算机相关专业(如计科、信息安全、数据科学、人工智能、通信、物联网、自动化、电子信息等)的在校学生、专业教师,或企业员工,小白入门等都适用。 3、该项目不仅具有很高的学习借鉴价值,对于初学者来说,也是入门进阶的绝佳选择;当然也可以直接用于 毕设、课设、期末大作业或项目初期立项演示等。 3、开放创新:如果您有一定基础,且热爱探索钻研,可以在此代码基础上二次开发,进行修改、扩展,创造出属于自己的独特应用。 欢迎下载使用优质资源!欢迎借鉴使用,并欢迎学习交流,共同探索编程的无穷魅力! 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip
C语言提取字符串子串通常可以使用字符串库函数 `strstr()` 或者手动实现子串查找算法。 1. 使用 `strstr()` 函数 `strstr()` 函数可以在一个字符串查找另一个子字符串出现的位置。它的原型如下: ```c char *strstr(const char *str1, const char *str2); ``` 其,`str1` 是要查找字符串,`str2` 是要查找的子字符串。如果 `str2` 存在于 `str1` ,则返回 `str2` 在 `str1` 第一次出现的地址;否则返回 `NULL`。 示例代码: ```c #include <stdio.h> #include <string.h> int main() { char str1[] = "hello world"; char str2[] = "world"; char *p = strstr(str1, str2); if (p != NULL) { printf("子串 \"%s\" 在字符串 \"%s\" 的位置是 %d\n", str2, str1, p - str1); } else { printf("子串 \"%s\" 不在字符串 \"%s\" \n", str2, str1); } return 0; } ``` 2. 手动实现子串查找算法 手动实现子串查找算法的基本思路是:在主串从前往后逐个字符比较,如果当前字符匹配,则比较下一个字符,否则从主串的下一个字符重新开始匹配。 示例代码: ```c #include <stdio.h> #include <string.h> int main() { char str1[] = "hello world"; char str2[] = "world"; int len1 = strlen(str1); int len2 = strlen(str2); int i, j; for (i = 0; i < len1 - len2 + 1; i++) { for (j = 0; j < len2; j++) { if (str1[i + j] != str2[j]) { break; } } if (j == len2) { printf("子串 \"%s\" 在字符串 \"%s\" 的位置是 %d\n", str2, str1, i); break; } } if (i == len1 - len2 + 1) { printf("子串 \"%s\" 不在字符串 \"%s\" \n", str2, str1); } return 0; } ```

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值