快捷搜索:  汽车  科技

单片机c语言带返回值的函数怎么写(让我们一起学习单片机C语言常用函数并自己来构造函数)

单片机c语言带返回值的函数怎么写(让我们一起学习单片机C语言常用函数并自己来构造函数)unsigned char *p_src;unsigned char *p_dest;头文件调用void *my_memcpy(void *dest void *src unsigned int len){

用C语言演示如何构造下列函数及其应用:

1, my_memcpy() 拷贝函数

2, my_memcmp() 比较函数

3, my_memset() 设值函数

单片机c语言带返回值的函数怎么写(让我们一起学习单片机C语言常用函数并自己来构造函数)(1)

头文件调用

一 my_memcpy 拷贝函数

void *my_memcpy(void *dest void *src unsigned int len)

{

unsigned char *p_dest;

unsigned char *p_src;

if((dest == NULL)||(src == NULL))

{

return NULL;

}

p_dest = (unsigned char *)dest; //转换成无符号字符型指针一个个复制拷贝

p_src = (unsigned char *)src; //转换成无符号字符型指针一个个复制拷贝

if(p_dest<=p_src) // 指针大小判断

{

while(len--)

{

*p_dest = *p_src;

p_dest ;

p_src ;

}

}else

{

p_dest = p_dest len-1;

p_src = p_src len-1;

while(len--)

{

*p_dest = *p_src;

p_dest--;

p_src--;

}

}

return p_dest;

}

// 例子:dataTb拷贝numTb的内容

int main(int argc char* argv[])

{

char numTb[]="美丽的世界";

char dataTb[50]={0};

my_memcpy(dataTb numTb 10);

printf("dataTb拷贝到的内容是:%s \r\n" dataTb);

my_memcpy(&dataTb[4] &dataTb[0] 10);

printf("dataTb拷贝到的内容是:%s \r\n" dataTb);

return 0;

}

单片机c语言带返回值的函数怎么写(让我们一起学习单片机C语言常用函数并自己来构造函数)(2)

输出结果

二,my_memcmp比较函数

int my_memcmp(const void *dest const void *src unsigned int len)

{

unsigned char *p_dest;

unsigned char *p_src;

if((dest == NULL)||(src == NULL))

{

return 2; // 指针有误

}

p_dest = (unsigned char *)dest; //转换成无符号字符型指针一个个比较

p_src = (unsigned char *)src; //转换成无符号字符型指针一个个比较

while(len--)

{

if (*p_dest > *p_src)

{

return 1;

}

else if (*p_dest < *p_src)

{

return -1;

}else

{

p_dest ;

p_src ;

}

}

return 0;

}

//构造一个密码为20190424,然后从键盘输入密码,二者进行比较,若一样,则输出密码输入正确,若不一样,则密码输入错误

int main(void)

{

char dataTb[20]={0};

char password[] = "20190424";

printf("请输入密码");

scanf("%s" dataTb);

printf("%s" dataTb);

if(!my_memcmp(password dataTb sizeof(password) -1))

{

printf("密码输入正确 \r\n");

}else

{

printf("密码输入错误 \r\n");

}

return 0;

}

单片机c语言带返回值的函数怎么写(让我们一起学习单片机C语言常用函数并自己来构造函数)(3)

第一次输入结果

单片机c语言带返回值的函数怎么写(让我们一起学习单片机C语言常用函数并自己来构造函数)(4)

第二次输人结果

三 my_memset 设值函数

void my_memset(void *dest unsigned char src unsigned int len)

{

unsigned char *p_dest;

if(dest == NULL)

{

return; // 指针有误

}

p_dest = (unsigned char *)dest; //转换成无符号字符型指针一个个赋值

while(len--)

{

*p_dest = src;

p_dest ;

}

}

// 经常用在初始化变量、变量重置

int main(int argc char* argv[])

{

static unsigned char numTb[20];

printf("请输入密码");

my_memset(numTb 0 sizeof(numTb));

scanf("%s" numTb);

printf("%s\r\n" numTb);

printf("请再次输入密码");

my_memset(numTb 0 sizeof(numTb));

scanf("%s" numTb);

printf("%s\r\n" numTb);

return 0;

}

单片机c语言带返回值的函数怎么写(让我们一起学习单片机C语言常用函数并自己来构造函数)(5)

输出结果

代码为原创 欢迎留言指正!

猜您喜欢: