C语言函数_string.h 之 内存search函数memchr

memchr

原型: extern void *memchr(const void *ptr, int value, size_t count);

功能: 从ptr所指向的内存开始的前count个字节中查找字符value,如果查找成功则返回字符value首次出现的位置(指针),否则返回NULL。
其中ptr会被解析成char *类型,value会被解析成unsigned char类型。
memchr函数在C++语言里有两个重载,分别是:
const void * memchr ( const void * ptr, int value, size_t count );
void * memchr (       void * ptr, int value, size_t count );
下面来看看memchr函数的C语言实现
extern void *memchr(const void *ptr, int value, size_t count);
void *memchr( const void *ptr, int value, size_t count)
{
assert( ptr != NULL);
while( count && (*(unsigned char *)ptr != (unsigned char )value))
{
ptr = (unsigned char *)ptr + 1;
count --;
}
return (count ? (void *)ptr : NULL);

}

相关函数:

strstr();

原型:char *strstr(const char *str1, const char *str2);

功能:返回一个指针,指向字符串str2首次出现于字符串str1的位置,如果没找到则返回NULL。


`string.h`是C语言标准库中的头文件,主要用于处理字符串操作。它包含了一系列用于处理字符串的函数,例如: 1. **strlen()**: 计算字符串(不包括结束符'\0')的长度,返回一个无符号整数。 ```c size_t strlen(const char *str); ``` 2. **strcpy()**: 将一个字符串复制到另一个已分配足够空间的缓冲区。 ```c char* strcpy(char* dest, const char* src); ``` 3. **strncpy()**: 类似于strcpy,但它可以指定复制的最大字符数,如果目标字符串小于指定长度,则不会填充'\0'。 ```c char* strncpy(char* dest, const char* src, size_t n); ``` 4. **strcat()**: 连接两个字符串,将源字符串追加到目标字符串的末尾。 ```c char* strcat(char* dest, const char* src); ``` 5. **strcmp()**: 比较两个字符串是否相等,若相等则返回0,否则返回非零值。 ```c int strcmp(const char* str1, const char* str2); ``` 6. **strstr()**: 查找一个子串在主串中第一次出现的位置,返回指向该位置的指针,如果没有找到则返回NULL。 ```c char* strstr(const char* haystack, const char* needle); ``` 7. **memset()**: 设置字符串中的所有元素为指定的字符或数值。 ```c void* memset(void* ptr, int value, size_t num); ``` 8. **memchr()**: 找到字符串中第一个等于特定字符的元素,返回指向该字符的指针。 ```c char* memchr(const void* ptr, int c, size_t num); ``` 这些函数在处理字符串时非常实用,但在使用它们之前要注意内存管理和安全性,避免内存溢出或野指针等问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值