C语言_库函数的模拟实现_作业

几个段子:

大一刚学c语言,第二次上机课,当我发现我照着书抄写的程序在运行之外的黑框里面跳出一排“烫烫烫烫烫”,当时就震惊了。你们能想象一个来自小城,在大学曾经没有怎么接触过电脑更不懂代码的幼儿当时心情的恐惧吗? 我真的以为是这是电脑过热发出去的警告,于是我弯下腰把插头拔了。

娘子给当程序猿的丈夫打电话:“下班顺路买一斤包子带回去,如果观看到的卖西瓜的,买一个。”当晚,程序猿丈夫手捧一个包子进了家门。。。娘子怒道:“你怎么就弄了一个包子?!”丈夫答曰:“因为观看到的了卖西瓜的。

24小时一个男的在路边抽烟。一女过来指着边上禁止抽烟的牌子对程序员说,你没观看到的路边的警告消息吗?男的抽了口烟说,我不在乎warning我只在乎error。

还没上大学的时候,高三暑假,跑到家那边的图书城想买传说中的C++的书,之后观看到的一本C#,我一看,嘿,这种++还写得挺艺术的,重叠起来咯,于是把C#弄了回去……

悬崖边儿上立了一块“WARNING”的牌子,结果只有程序猿掉了下去……

两个程序员,一个技术精湛,思维严谨,认真负责,Bug极少,至今单身;

一个技术一般,吊儿郎当,Bug一堆,经常被测试MM叫到她旁边,接受批评,后来成了她男朋友……哈,傻子才会信,测试不还是男生占多数吗?又想骗我不好好编程。

以上纯属娱乐~

模拟实现strlen

#include <string.h>
#include <stdio.h>
#include <assert.h>
int my_strlen(const char* str)
{
	assert(str!=NULL);
	int count = 0;
	while (*str != 0)
	{
		count++;
		str++;
	}
	return count;
}
int main()
{
	char arr[] = "abcdef";
	int len = my_strlen(arr);
	printf("%d", len);
	return 0;
}

模拟实现strcpy

char* my_strcpy(char* dest,const char* src)
{
	char* ret = dest;
	assert(dest&&src);
	while (*dest++ = *src++)
	{
		;
	}
	return ret;
}
int main()
{
	char arr1[30] = "";
	char arr2[] = "hello world";
	my_strcpy(arr1, arr2);
	printf("%s\n", arr1);
	return 0;
}

模拟实现strcmp

int my_strcmp(char* arr1,char*arr2)
{
	while (*arr1 == *arr2)
	{
		if (*arr1 == '\0')
			return 0;
		arr1++;
		arr2++;
	}
	return *arr1 - *arr2;
}
int main()
{
	char arr1[] = "abcdef";
	char arr2[] = "abq";
	int ret = my_strcmp(arr1, arr2);
	if (ret == 0)
		printf("=");
	else if (ret > 0)
		printf(">");
	else
		printf("<");
	return 0;
}

模拟实现strcat

char* my_strcat(char* dest,char* src)
{
	char* ret = dest;
	while (*dest)
	{
		dest++;
	}
	while (*dest++ = *src++)
	{
	}
	return ret;
}
int main()
{
	char arr1[30] = "abcd";
	char arr2[] = "efghijk";
	char* ret = my_strcat(arr1, arr2);
	printf("%s", ret);
	return 0;
}

模拟实现strstr

char* my_strstr(char* arr1, char* arr2)
{
	if (*arr2 == '\0')
		return (char*)arr1;
	char* s1 = arr1;
	char* s2 = arr2;
	char* cp = arr1;
	while (*cp)
	{
		s1 = cp;
		s2 = arr2;
		while (*s1 != '\0' && *s2 != '\0' && *s1 == *s2)
		{
			s1++;
			s2++;
		}
		if (*s2 == '\0')
			return cp;
		cp++;
	}
	return NULL;
}
int main() 
{
	char arr1[] = "abbbcdef";
	char arr2[] = "bbc";
	char* ret = my_strstr(arr1, arr2);
	if (ret == NULL)
		printf("找不到");
	else
		printf("%s", ret);
	return 0;
}

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值