memchr函数

C/C++ 2014年10月22日 , , ,

C标准库头文件<string.h>中函数memchr的一种实现方法及解释。测试系统为CentOS 6.5,编译器为GCC 4.4.7。http://furzoom.com/function-memchr/

memchr函数说明

void *memchr(const void *s, int c, size_t n);

函数memchr查找c(转换为unsigned char类型)在s指向的对象的前n个字符(都转换为unsigned char类型)中第一次出现的位置。

函数memchr返回指向查找到的位置的指针,或者该字符没有出现在对象中则返回空指针。

memchr函数实现要点

memchr需要注意的是地方是数据类型的转换。同时涉及到指针和字符参数赋值给不同类型的动态数据对象,如把数组元素赋值给unsigned char类型,目的是为了正确而高效地进行比较。返回值表达式中编写(void *)强制类型转换是为了清晰性,它并不是必需的。

memchr实现

// memchr function
// By furzoom @ Oct.22, 2014
// From http://furzoom.com/
#include <stddef.h> // for NULL

void *(memchr)(const void *s, int c, size_t n)
{
	const unsigned char uc = c;
	const unsigned char *pu;

	for(pu = s; n > 0; ++su, --n)
	{
		if(*pu == uc)
		{
			return ((void *)pu);
		}
	}
	return NULL;
}

memchr函数说明

实现过程没有进行错误处理。第9行的指针pu的定义前的const不能少,与参数s类型匹配。

更多请参考C语言标准库头文件string.hC标准库

如无特别说明,本站文章皆为原创,若要转载,务必请注明以下原文信息:
日志标题:《memchr函数》
日志链接:http://furzoom.com/function-memchr/
博客名称:枫竹梦

【上一篇】
【下一篇】

发表评论

插入图片

NOTICE1:请申请gravatar头像,没有头像的评论可能不会被回复!

回到顶部