首页 > 其他分享 >字符串操作函数2

字符串操作函数2

时间:2023-09-03 16:32:39浏览次数:42  
标签:p2 p1 函数 ret char printf 字符串 操作 NULL

字符串操作函数2_子串

字符串操作函数2_子串_02

字符串操作函数2_#include_03

strncat的用法,注意要追加\0。

字符串操作函数2_子串_04

字符串操作函数2_bc_05

int main()
{
	//strncmp字符串比较函数
	const char* p1 = "abcdef";
	const char* p2 = "abcqwer";
	int ret = strncmp(p1, p2, 3);
	printf("%d\n", ret);

	return 0;
}

字符串操作函数2_子串_06

int main()
{
	char* p1 = "abcdef";
	char* p2 = "def";
	char* ret = strstr(p1, p2);
	if (ret == NULL)
	{
		printf("子串不存在\n");
	}
	else
		printf("%s\n", ret);
	return 0;
}

下面是仿写的字符串查找函数my_strstr,逻辑思维比较强,查找时有多种情况,例如p1较短提前结束,p1=abc,p2=abchjh。或者p1为adcbbbc,p2=bbc,查找时需要先绕过一个b,才能找到结果。又或者P2为\0。

还有解决该问题的高级算法思维,KMP算法。可以了解。

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


char* my_strstr(const char* p1, const char* p2)
{
	assert(p1 != NULL);
	assert(p2 != NULL);
	char* str1 = p1;
	char* str2 = p2;
	char* cur = p1;

	if (*str2 == '\0')
	{
		return str1;
	}
	while (*cur)
	{
		str1 = cur;
		str2 = (char*)p2;
		while (*str1 != '\0' && *str2 != '\0' && *str1 == *str2)//while(*str1&&*str2&&*str1 == *str2)
		{
			str1++;
			str2++;
		}
		if (*str2 == '\0')
		{
			return cur;//找到了子串
		}
		if (*str1 == '\0')
		{
			return NULL;
		}
		cur++;
	}
	return NULL;//找不到子串
}

int main()
{
	char* p1 = "abbbcdef";
	char* p2 = "bbc";
	char* ret = my_strstr(p1, p2);
	if (ret == NULL)
	{
		printf("子串不存在\n");
	}
	else
		printf("%s\n", ret);
	return 0;
}

字符串操作函数2_子串_07

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

int main()
{
	char arr[] = "[email protected]";
	char* p = "@.";
	char buf[1024] = { 0 };
	strcpy(buf, arr);
	//切割字符串
	char* ret = NULL;
	for (ret = strtok(buf, p); ret != NULL; ret = strtok(NULL, p))
	{
		printf("%s\n", ret);
	}



	//char* ret = strtok(arr, p);
	//printf("%s\n", ret);

	//ret = strtok(NULL, p);
	//printf("%s\n", ret);

	//ret = strtok(NULL, p);
	//printf("%s\n", ret);

	return 0;
}

字符串操作函数2_#include_08

字符串操作函数2_#include_09

字符串操作函数2_bc_10

字符串操作函数2_#include_11

字符串操作函数2_子串_12

字符串操作函数2_#include_13

打印数组的时候,只用写数组名就行。

标签:p2,p1,函数,ret,char,printf,字符串,操作,NULL
From: https://blog.51cto.com/u_15906483/7341265

相关文章

  • 无涯教程-JavaScript - STDEV函数
    STDEV函数替代Excel2010中的STDEV.S函数。描述该函数根据样本估算标准偏差。标准偏差是对值与平均值(平均值)的分散程度的度量。语法STDEV(number1,[number2],...)争论Argument描述Required/OptionalNumber1Thefirstnumberargumentcorrespondingtoasampleo......
  • C语言-函数
    函数基本用法举例:两数求和#include<stdio.h>intsum(int,int);//函数的声明,函数的原型intmain(intargc,charconst*argv[]){ intm=10; intn=20; ints; s=sum(m,n); printf("%d\n",s);}intsum(inta,intb){ intsum; sum=a+b; returns......
  • 基于qsot库函数进行排序
    #include<stdio.h>#include<stdlib.h>intcmp_int(constvoid*e1,constvoid*e2){//进行比较return(int)e1-(int)e2;}intcmp_f(constvoid*e1,constvoid*e2){if((float)e1>(float)e2){return1;}elseif((float)e1==(float)e2){retu......
  • 无涯教程-JavaScript - RANK函数
    RANK函数取代了Excel2010中的RANK.EQ函数。描述该函数返回数字列表中数字的等级。数字的等级是其相对于列表中其他值的大小。如果对列表进行排序,则数字的排名将是其位置。语法RANK(number,ref,[order])争论Argument描述Required/OptionalNumberThenumberwhose......
  • 无涯教程-JavaScript - QUARTILE函数
    QUARTILE函数取代了Excel2010中的QUARTILE.INC函数。描述该函数返回数据集的四分位数。四分位数通常用于销售和调查数据中,以将人群分为几类。语法QUARTILE(array,quart)争论Argument描述Required/OptionalArrayThearrayorcellrangeofnumericvaluesforwhi......
  • 无涯教程-JavaScript - PERCENTRANK函数
    PERCENTRANK函数取代了Excel2010中的PERCENTRANK.INC函数。描述该函数以数据集的百分比形式返回数据集中的值的排名。此功能可用于判断数据集中值的相对位置。语法PERCENTRANK(array,x,[significance])争论Argument描述Required/OptionalArrayThearrayorrangeo......
  • Java:commons-codec实现byte数组和16进制字符串转换
    目录commons-codec实现原理封装StringUtil类commons-codec文档https://commons.apache.org/proper/commons-codec/https://mvnrepository.com/artifact/commons-codec/commons-codec坐标<dependency><groupId>commons-codec</groupId><artifactId>com......
  • 五、函数
    函数定义:定义成函数后,再通过调用函数来实现代码的复用性。1.语法规则:def函数名():存放要封装的代码,重复的代码2.解释函数的组成部分def是关键字,定义函数的关键字3.函数的调用:函数名()4.return的用法(关键字):return返回的值是可以把值赋值给变量的。用法主要有两......
  • Java使用有限状态机算法实现判断字符串是否合法
    题目描述请根据给出的正则表达式来验证邮箱格式是否合法,如果用户输入的格式合法则输出「邮箱格式合法」,否则输出「邮箱格式不合法」。正确格式对应的正则表达式"[a-zA-Z0-9]+@[a-zA-Z0-9]+\.[a-zA-Z0-9]+";输入:[email protected]输出:邮箱格式合法分析最容易想到的是正则表达......
  • python操作sqlite
    importjsonimportsqlite3importpandasaspdclassSqliteTool:def__init__(self,db_path):self.db_path=db_pathself.conn=sqlite3.connect(self.db_path)self.conn.row_factory=sqlite3.Rowself.cursor=self.con......