一起来了解c语言的str函数

 更新时间:2022年02月14日 14:31:33   作者:roseisbule  
这篇文章主要为大家详细介绍了c语言的str函数,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助

strlen:

用于求字符串长度,从首字符开始,到'\0'结束,'\0'不计入总长度。

函数实现:

size_t my_strlen(const char* ptr)
{
	assert(ptr);
	const char* ptx = ptr;
	while (*(++ptx));
	return (size_t)(ptx - ptr);
}

strcmp:

用于比较两个字符串大小,注意大小并不是指字符串长度,而是从第一个字符开始比较,比较字符的大小。该函数返回的是一个int值,不同编译器,返回的值是不一样。但是正负是一致的,当第一个大于第二个,返回正值,小于则返回负值,相等返回0。

函数实现:

int my_strcmp(const char* str1,const char* str2)
{
	assert(str1 && str2);
	while((!(*str1 - *str2)) && ((*(str1++)) * (*(str2++))));
	return (int)(*str1 - *str2);
}

strcpy:

用于复制字符串。

函数实现:

char* my_strcpy(char* dest,const char* source)
{
	assert(dest && source);
	char* result = dest;
	while (*(dest++) = *(source++));
	return result;
}

strcat:

用于在目标字符串末尾追加一个字符串。

函数实现:

char* my_strcat(char* a, const char* b)
{
	assert(a && b);
	char* tmp = a;
	while (*(++a));
	while (*(a++) = *(b++));
	*a = '\0';
	return tmp;
}

strstr:

用于在一个字符串内寻找另一个字符串。这于KMP算法有关。

函数实现:

const char* my_strstr(const char* a, const char* b)//a为长字符串 b为短字符串
{
	char* cp = (char*)a;
	char* s1;
	char* s2;
	if (!*b)
		return a;
	while (*cp)
	{
		s1 = cp;
		s2 = (char*)b;
		while (*s1 && *s2 && !(*s1 - *s2))
		{
			s1++;
			s2++;
		}
		if (!*s2)
			return cp;
		cp++;
	}
	return NULL;
}

atoi:

这个函数很有意思,它会把字符串的数字串转化为int值。

函数实现:

int my_atoi(const char* str)
{
	assert(str);
	int num = 0;
	int result = 0;
	const char* tmp = str;
	while (*str && *str != '.')
	{
		num++;
		str++;
	}
	while (num--)
	{
		result += (*tmp - '0') * (int)pow(10, num);
		tmp++;
	}
	return result;
}

strncpystrncmpstrncat

三个函数都是限制了字符个数,功能是一样的。

函数实现:

char* my_strncpy(char* dest, const char* sou, size_t num)
{
	assert(dest && sou);
	char* tmp = dest;
	while ((num--) && (*(dest++) = *(sou++)));
	return tmp;
}
char* my_strncat(char* a, const char* b, int n) 
{
	assert(a && b);
	char* tmp = a;
	while (*(++a));
	while ((n--) && (*(a++) = *(b++)));
	*a = '\0';
	return tmp;
}
int my_strncmp(const char* str1, const char* str2,int n)
{
	assert(str1 && str2);
	while ((!(*str1 - *str2)) && ((*(str1++)) * (*(str2++))) && (n--));
	return (int)(*str1 - *str2);
}

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注脚本之家的更多内容! 

相关文章

  • 深入了解C语言冒泡排序优解

    深入了解C语言冒泡排序优解

    这篇文章主要介绍了C语言冒泡排序法的实现(升序排序法),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-07-07
  • C++使用泛型导致的膨胀问题

    C++使用泛型导致的膨胀问题

    这篇文章主要介绍了C++使用泛型导致的膨胀,智能家居主机的嵌入式平台上使用C++进行开发。FLASH存储空间有限,这是必须要考虑的因素,一定要重视,下面我们一起进入文章看看详细内容
    2021-11-11
  • C语言中qsort函数用法及用冒泡排序实现

    C语言中qsort函数用法及用冒泡排序实现

    qsort函数是由C语言提供的标准库函数, 它的实现思想是快速排序。这篇文章主要介绍了C语言中qsort函数用法及用冒泡排序实现qsort函数功能,需要的可以参考一下
    2022-10-10
  • 详解C++-(=)赋值操作符、智能指针编写

    详解C++-(=)赋值操作符、智能指针编写

    C++的智能指针是克服C++大坑的非常有用的的手段,之所以说它智能,是因为它为程序员克服了重要的编程问题——悬挂指针,下面通过本文给大家分享C++-(=)赋值操作符、智能指针编写,感兴趣的朋友一起看看吧
    2018-03-03
  • C++STL之string类的使用

    C++STL之string类的使用

    这篇文章主要为大家详细介绍了C++STL中的string类,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-03-03
  • C语言详解分析进程控制中进程终止的实现

    C语言详解分析进程控制中进程终止的实现

    当进程完成执行最后语句并且通过系统调用 exit() 请求操作系统删除自身时,进程终止。这时,进程可以返回状态值(通常为整数)到父进程(通过系统调用 wait())。所有进程资源,如物理和虚拟内存、打开文件和 I/O 缓冲区等,会由操作系统释放
    2022-08-08
  • C++第三方库jsoncpp超详细讲解

    C++第三方库jsoncpp超详细讲解

    这篇文章主要介绍了C++第三方库jsoncpp的相关资料,JSONcpp是一个在C++中用于处理JSON数据的库,支持JSON格式的序列化和反序列化,通过JSONcpp,可以轻松地将数据对象组织成JSON格式的字符串,需要的朋友可以参考下
    2024-10-10
  • C语言之字符串模糊查询方法的实现

    C语言之字符串模糊查询方法的实现

    本篇文章主要为大家介绍字符串模糊查询的C语言程序编写方法,有需要的朋友可以参考下
    2015-07-07
  • 浅谈C++中的构造函数分类及调用规则

    浅谈C++中的构造函数分类及调用规则

    这篇文章主要介绍了C++中的构造函数分类及调用规则,文中根据参数写出了几种不同类型的构造函数并解释了如何调用,需要的朋友可以参考下
    2016-03-03
  • C++中pair的用法总结

    C++中pair的用法总结

    pair是C++STL(标准模板库)中的一个现有容器,它将2个数据整合成一组数据,当我们类似需求的时候就可以使用到pair,pair的本质其实就是个结构体,本文将详细的给大家介绍pair用法,感兴趣的同学可以参考阅读
    2023-05-05

最新评论