内存与字符串操作函数


      面试经常考的,可是经常忘记!现在项目一般都是用string,很少用char,都不记得写了,现在记录下!省的忘记




// test123.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <assert.h>
#include <time.h>

void *mystrcpy(void * const dest,void const * const src,
			   const size_t num)
{
	if(dest==src)
	{
		return dest;
	}

	for (size_t i=0;i<num;i++)
	{
		*(((char *)dest+i))=*(((char *)src+i));
	}

	return dest;
}

int mymemcmp(void const *buf1,void const *buf2,const size_t num)
{
	for (size_t i=0;i<num;i++)
	{
		if(*((char *)buf1+i)>*((char *)buf2+i))
		{
			return 1;
		}
		else
		{
			if(*((char *)buf1+i)<*((char *)buf2+i))
			{
				return -1;
			}
		}
	}

	return 0;
}

void* mymemset(void * const dest,int c,const size_t num)
{
	for (size_t i=0;i<num;i++)
	{
		*((char *)dest+i)=c;
	}

	return dest;
}

void myassert(bool isassert)
{
	if(!isassert)
	{
		printf("Assertion failed!\n");
		abort();
	}
}

char* mystrcpy(char * const dest,char const * const src)
{
	if(dest==src)
	{
		return dest;
	}

	size_t i=0;
	while(*(dest+i)=*(src+i))
	{
		i++;
	}

	return dest;
}

char* mystrncpy(char * const dest,char const * const src,
				const size_t num)
{
	for (size_t i=0;i<num;i++)
	{
		*(dest+i)=*(src+i);
	}

	*(dest+i)='\0';

	return dest;
}

char* mystrcat(char * const dest,char const * const src)
{
	int i=0;
	while(*(dest+i)!='\0')
	{
		i++;
	}

	int j=0;
	while(*(dest+i+j)=*(src+j))
	{
		j++;
	}

	return dest;
}

char* mystrncat(char * const dest,char const * const src,const size_t num)
{
	int i=0;
	while(*(dest+i)!='\0')
	{
		i++;
	}

	for (size_t j=0;j<num;j++)
	{
		*(dest+i+j)=*(src+j);
	}

	*(dest+i+j)='\0';

	return dest;
}

int mystrcmp(char const * const str1,char const * const str2)
{
	int i=0;
	while(!(*(str1+i)=='\0'&&*(str2+i)=='\0'))
	{
		if(*(str1+i)>*(str2+i))
		{
			return 1;
		}
		else
		{
			if(*(str1+i)<*(str2+i))
			{
				return -1;
			}
		}

		i++;
	}

	return 0;
}

int mystrncmp(char const * const str1,char const * const str2,const size_t num)
{
	for (size_t i=0;i<num;i++)
	{
		if(*(str1+i)>*(str2+i))
		{
			return 1;
		}
		else
		{
			if(*(str1+i)<*(str2+i))
			{
				return -1;
			}
		}
	}
	return 0;
}

char* mystrchr(char const * const dest,int c)
{
	int i=0;
	while(*(dest+i)!=(char)c)
	{
		i++;
	}

	return (char *)dest+i;
}

char* findstr(char * const dest,char const * const src,
			  char c,size_t num)
{
	char *temp=strchr(src,c);

	for (size_t i=0;i<num;i++)
	{
		temp=strchr(temp+1,c);
	}

	mystrncpy(dest,temp+1,strchr(temp+1,c)-temp-1);

	return dest;
}

int _tmain(int argc, _TCHAR* argv[])
{
	//int a[10]={1,2,3,4,5,6,7,8,9,10};
	//int b[10]={1,2,3,4,5,6,7,8,9,10};

	//for (int i=0;i<10;i++)
	//{
	//	printf("%d  ",b[i]);
	//}
	//printf("\n");

	//mystrcpy(b,a,10*sizeof(int));

	//for (int i=0;i<10;i++)
	//{
	//	printf("%d  ",b[i]);
	//}
	//printf("\n");

	//printf("%d\n",mymemcmp(a,b,sizeof(int)*10));

	//mymemset(a,0,sizeof(int)*10);

	//for (int i=0;i<10;i++)
	//{
	//	printf("%d  ",a[i]);
	//}
	//printf("\n");

	//mymemset(a,1,sizeof(int)*10);

	//for (int i=0;i<10;i++)
	//{
	//	printf("%d  ",a[i]);
	//}
	//printf("\n");

	//int *p=new int;

	//p=NULL;

	//if(p==NULL)
	//{
	//	printf("fjsaklfjslf\n");
	//	abort();
	//}

	//tm timedata;
	//while(1)
	//{
	//	_getsystime(&timedata);
	//	system("cls");
	//	printf("现在是:%d年%d月%d日 %d:%d:%d 星期%d\n",
	//		timedata.tm_year+1900,timedata.tm_mon+1,timedata.tm_mday,
	//		timedata.tm_hour,timedata.tm_min,timedata.tm_sec,
	//		timedata.tm_wday);
	//}

	//char str1[99]="abcd";
	//char str2[99]="abce";

	//printf("%s\n",str1);

	//mystrncpy(str1,str2,2);

	//printf("%s\n",str1);

	//printf("%s\n",mystrncat(str1,str2,2));

	//printf("%s\n",str1);

	//printf("%d\n",mystrncmp(str1,str2,2));

	char str[99]="|张三|李四|王五|";
	char name1[99];
	char name2[99];
	char name3[99];

	findstr(name1,str,'|',0);
	printf("%s\n",name1);

	findstr(name2,str,'|',1);
	printf("%s\n",name2);

	findstr(name3,str,'|',2);
	printf("%s\n",name3);

	return 0;
}


基于bert实现关系三元组抽取python源码+数据集+项目说明.zip基于bert实现关系三元组抽取python源码+数据集+项目说明.zip基于bert实现关系三元组抽取python源码+数据集+项目说明.zip基于bert实现关系三元组抽取python源码+数据集+项目说明.zip基于bert实现关系三元组抽取python源码+数据集+项目说明.zip 个人大四的毕业设计、课程设计、作业、经导师指导并认可通过的高分设计项目,评审平均分达96.5分。主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者,也可作为课程设计、期末大作业。 [资源说明] 不懂运行,下载完可以私聊问,可远程教学 该资源内项目源码是个人的毕设或者课设、作业,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96.5分,放心下载使用! 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),供学习参考。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值