一起来了解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-05-05
  • C语言实现实时钟表

    C语言实现实时钟表

    这篇文章主要为大家详细介绍了C语言实现实时钟表,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-05-05
  • C++实现LeetCode(17.电话号码的字母组合)

    C++实现LeetCode(17.电话号码的字母组合)

    这篇文章主要介绍了C++实现LeetCode(17.电话号码的字母组合),本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-07-07
  • C++中的数字转字符串to_string

    C++中的数字转字符串to_string

    这篇文章主要介绍了C++中的数字转字符串to_string,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11
  • c++中用TINYXML解析XML文件

    c++中用TINYXML解析XML文件

    这篇文章主要介绍了c++中如何用TINYXML解析XML文件,文中案例非常详细,帮助大家更好的了解和学习,感兴趣的朋友可以了解下
    2020-06-06
  • 一篇文章带你入门C语言:数组

    一篇文章带你入门C语言:数组

    这篇文章主要介绍了C语言中数组的一些基本知识小结,其中重点是对于数组的内存分配相关方面的知识整理,需要的朋友可以参考下
    2021-08-08
  • C++特性:迭代器

    C++特性:迭代器

    这篇文章主要介绍了C++特性:迭代器,本文主要通过介绍迭代器,迭代器和指针的区别,容器迭代器的使用等方面,需要的朋友可以参考下
    2021-06-06
  • C/C++ Qt 自定义Dialog对话框组件应用案例详解

    C/C++ Qt 自定义Dialog对话框组件应用案例详解

    有时候我们需要一次性修改多个数据,使用默认的模态对话框似乎不太够用,此时我们需要自己创建一个自定义对话框。这篇文章主要介绍了Qt自定义Dialog对话框组件的应用,感兴趣的同学可以学习一下
    2021-11-11
  • C++/Php/Python 语言执行shell命令的方法(推荐)

    C++/Php/Python 语言执行shell命令的方法(推荐)

    下面小编就为大家带来一篇C++/Php/Python 语言执行shell命令的方法(推荐)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-03-03
  • C++11智能指针之weak_ptr详解

    C++11智能指针之weak_ptr详解

    这篇文章主要介绍了 C++11智能指针之weak_ptr详解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-06-06

最新评论