日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

C語言字符串函數介紹與模擬實現詳解_C 語言

作者:誠摯的喬治 ? 更新時間: 2022-04-28 編程語言

strlen

? strlen
頭文件 #include
格式 size_t strlen( const char* str)
功能 計算字符串長度
返回值 返回字符串的長度
//strlen的模擬實現
#include
#include
size_t  my_strlen(const char* str)
{
	assert(str); int count = 0;
	while (*str != '\0')
	{
		str++;
		count++;
	}
	return count;
}

strcat

? strcat
頭文件 #include
格式 char* strcat(char* dest,const char* src)
功能 追加子字符串到目標字符串后
返回值 目標字符串的首地址
//strcat模擬實現
#include
#include
char* my_strcat(char* str1,const char *str2)
{
	assert(str1, str2);
	char* tmp = str1;
	//找出str1中的斜杠零
	while (*str1)
	{
		str1++;
	}
	//在str1上追加
	while (*str1++=*str2++)
	{
		;
	}
	return tmp;
}
int main()
{
	char arr1[20] = "hello";
	char arr2[] = " world";
	printf("%s",my_strcat(arr1,arr2));
	return 0;
}

strcpy

? strcpy
頭文件 #include
格式 char* strcpy(char* dest,char* src)
功能 將參數src字符串拷貝至參數dest所指的地址
返回值 目標字符串的首地址
//模擬實現strcpy
#include
#include
char* my_strcpy(char *str2,char *str1)
{
	assert(str1, str2);
	char* tmp = str2;
	while (*str1)
	{
		*str2++ = *str1++;
	}
	return tmp;
}
int main()
{
	char arr1[20] = "abcdef";
	char arr2[20] = "xxxxxxxxxxxxx";
	my_strcpy(arr2,arr1);
	printf("%s", arr2);
	return 0;
}

strcmp

? strcmp
頭文件 #include
格式 int strcmp (const char* str1,const char* str2)
功能 比較兩字符串的大小
返回值

str1>str2? 返回值>0

str1

str1=str2? 返回值=0

//strcmp模擬實現
#include
#include
int strcmp(const char* str1,const char* str2)
{
	assert(str1, str2);
	while (*str1 == *str2)
	{
		str1++;
		str2++;
	}
	return *str1 - *str2;
	
}
int main()
{
	char arr1[] = "abc";
	char arr2[] = "abcd";
	printf("%d", strcmp(arr1, arr2));
	return 0;
}

strstr

? strstr
頭文件 #include ?
格式 char* my_strstr(const char*str,const char* substr)
功能 在目標字符串中查找子字符串
返回值 目標字符串中,與子字符串相同的字符串首地址

?

#include
#include
char* my_strstr(const char*str,const char* substr)
{
	char* s1 = str;//防止str被破壞
	char* s2 = substr;//防止substr被敗壞
	char* cur = str;//存儲中間地址
	assert(str && substr);
	//排除substr為空
	if (substr == '\0')
	{
		return str;
	}
	while (*cur)
	{
		s1 = cur;
		s2 = substr;
		while (*s1 && *s2 && *s1 == *s2)
		{
			s1++;
			s2++;
	    }
		if (*s2 == '\0')
			return cur;
		cur++;
	}
	return NULL;
}
int main()//模擬實現strstr函數
{
	char arr1[] = "abbbcdef";
	char arr2[] = "bbc";
	printf("%s", my_strstr(arr1, arr2));
	return 0;
}

原文鏈接:https://z-ming.blog.csdn.net/article/details/122986054

欄目分類
最近更新