单片机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() 设值函数
头文件调用
一 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;
}
输出结果
二,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;
}
第一次输入结果
第二次输人结果
三 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;
}
输出结果
代码为原创 欢迎留言指正!