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

學無先后,達者為師

網站首頁 編程語言 正文

C語言三個函數的模擬實現詳解_C 語言

作者:WangLongxyd ? 更新時間: 2022-05-25 編程語言

一、strcpy

//模擬實現strcpy
#include
#include
char* my_strcpy(char*dest, char*str)
{
	assert(dest && str);
	char* tmp = dest;
	while (*str != '\0')
	{
		*dest = *str;
		dest++;
		str++;
	}
	*dest = '\0';
	return tmp;
}
int main()
{
	char arr1[20] = "xxxxxxxxxxxxxxx";
	char arr2[] = "study hard!";
	my_strcpy(arr1, arr2);
	printf("%s\n", arr1);
	return 0;
}

二、模擬實現strcat

思路:先找到目標字符串的\0位置,然后停下

用兩個指針掃描目標字符串和源字符串,并賦值

在源字符串添加完成后,加上’\0‘

//模擬實現strcat
//字符串追加
#include
#include
char* my_strcat(char* dest, const char* str)
{
	assert(dest && str);
	char* tmp = dest;
	//找到目標的尾巴
	while (*dest != '\0')
	{
		dest++;
	}
	//鏈接字符串
	while (*dest++ = *str++)
	{
		;
	}
	*dest = '\0';
	return tmp;
}
int main()
{
	char arr1[20] = "hello";
	char arr2[] = " world!";
	my_strcat(arr1, arr2);
	printf("%s\n", arr1);
	return 0;
}

三、strcmp

要注意,strcmp不是比較兩字符串的長度,而是逐位比較字符的ASCII碼值

//模擬實現strcmp 返回的不是1 -1,而是正數,負數
#include
#include
int my_strcmp(const char* str1, const char* str2)
{
	assert(str1&&str2);
	while (*str1 == *str2)
	{
		if (*str1 == '\0')
		{
			return 0;
		}
		str1++;
		str2++;
	}
	return *str1 - *str2;
}
int main()
{
	char arr1[] = "abcdef";
	char arr2[] = "abcder";
	int ret=my_strcmp(arr1, arr2);
	if (ret < 0)
	{
		printf("<\n");
	}
	else if (ret == 0)
	{
		printf("=\n");
	}
	else
	{
		printf(">\n");
	}
	return 0;
}

總結:

多多實現庫函數的模擬可以更好地認識指針。

原文鏈接:https://blog.csdn.net/WangLongxyd/article/details/123646786

欄目分類
最近更新