c语言学习笔记(1) C语言库函数

1:ASLL可现实字符

2:.c文件



#include "library.h"


//U8 lib_int2string(U32 number, U8 *char_s)
//{
//	U32 i = 0, j;
//	U8 chTemp;
//	
//	while (number != 0)
//	{
//		char_s[i] = '0' + number % 10;
//		i ++;
//		number /= 10;
//	}

//	char_s[i] = '\0';
//	for (j = 0; j < i / 2; j ++)
//	{
//		chTemp = char_s[j];
//		char_s[j] = char_s[i - 1- j];
//		char_s[i - 1- j] = chTemp;
//	}

//	return i;
//}


/**
 * @Description - 初始化内存函数,以字节为单位
 *
 * @param[in]  - pdst : 目标地址.
 * @param[in]  - psrc : 源地址.
 * @param[in]  - psrc : 源地址.
 *
 * @return - none.
 */
void lib_memset(void *pDst, uint8_t value, uint32_t Len)
{
	unsigned char *Dst = (unsigned char *)pDst;
	for (uint32_t i = 0; i < Len; i++)
	{
		*Dst++ = value;
	}	
}


/**
 * @Description - 内存拷贝函数,以字节为单位
 *
 * @param[in]  - pdst : 目标地址.
 * @param[in]  - psrc : 源地址.
 * @param[in]  - psrc : 源地址.
 *
 * @return - none.
 */
void lib_memcpy(void *pDst, void *pSrc, uint32_t Len)
{
	unsigned char *Dst = (unsigned char *)pDst;
	unsigned char *Src = (unsigned char *)pSrc;
	for (uint32_t i = 0; i < Len; i++)
	{
		*Dst++ = *Src++;
	}
}


/**
 * @Description - 数组对比函数,对比两数组是否相等
 *
 * @param[in]  - pdat1 : 比较地址1.
 * @param[in]  - pdat2 : 比较地址2.
 * @param[in]  - len : 字节长度.
 *
 * @return - true-两数组相等  false-两数组不相等.
 */
bool lib_memcmp(void *pdat1,void *pdat2, uint32_t len)
{
	uint8_t *pdat11 = (uint8_t *)pdat1;
	uint8_t *pdat22 = (uint8_t *)pdat2;
	uint32_t i;

	for(i = 0;i < len;i++)
	{
		if(*pdat11++ != *pdat22++)
		{
			return false;
		}
	}
	return true;
}


//添加
bool lib_memadd(void *addr,uint16_t len,uint8_t val)
{
	uint8_t *pdat = (uint8_t *)addr;
	uint16_t i;

	for(i = 0;i < len;i++)
	{
		*pdat++ += val;
	}
	return true;
}


//减去
bool lib_memminus(void *addr,uint16_t len,uint8_t val)
{
	uint8_t *pdat = (uint8_t *)addr;
	uint16_t i;

	for(i = 0;i < len;i++)
	{
		*pdat++ -= val;
	}
	return true;
}


//左移动
bool lib_memmove(void *addr,uint16_t len,uint8_t nums)
{
	uint8_t *pdat = (uint8_t *)addr;
	uint16_t i;

	if (NULL == pdat)
	{
		return false;
	}
	while (nums--)
	{
		for(i = 0;i < len - 1;i++)
		{
			*(pdat+i) = *(pdat+i+1);
		}
	}
	return true;
}


/**
 * @Description - 判断某段内存是否都为指定的值
 *
 * @param[in]  - pdata : 数值指针.
 * @param[in]  - len : 字节长度.
 * @param[in]  - val :
 *
 * @return -比较结果: true-都是指定值  false-有非指定值
 */
bool lib_memcmp_const(uint8_t * addr,uint16_t len,uint8_t val)
{
	uint8_t *pdata = (uint8_t *)addr;

	while (len--)
	{
		if(*pdata++ != val)
		{
			return false;
		}
	}
	return true;
}

bool lib_memchange(void *psrc, uint32_t len)
{
	if (NULL == psrc || 0 == len) 
	{
		return false;
	}
	uint8_t *pdat = (uint8_t *)psrc;
	uint16_t i;
	
	for(i = 0; i < len /2; ++ i)
	{
		uint8_t temp = 0;
		
		temp = *(pdat + i);
		*(pdat + i) = *(pdat+len-1-i);
		*(pdat+len-1-i) = temp;
	}
	
	return true;
}


3 .h文件



#ifndef __LIBRARY_H
#define	__LIBRARY_H

#include <stdio.h>
#include <stdint.h>
#include <stdbool.h>

//uint8_t   lib_int2string(uint32_t number, uint8_t *char_s);
void lib_memset(void *pDst, uint8_t value, uint32_t Len);
void lib_memcpy(void *pDst, void *pSrc, uint32_t Len);
bool lib_memcmp(void *pdat1,void *pdat2, uint32_t len);
bool lib_memcmp_const(uint8_t * addr,uint16_t len,uint8_t val);
bool lib_memadd(void *addr,uint16_t len,uint8_t val);
bool lib_memminus(void *addr,uint16_t len,uint8_t val);
bool lib_memmove(void *addr,uint16_t len,uint8_t nums);
bool lib_memchange(void *psrc, uint32_t len);

#endif



可以加入QQ群:687360507
与大伙沟通交流,技术在于分享而进步

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值