该头文件定义了一些用于 操作C语言字符串和数组的函数。
对每个函数的功能描述:
Copying(复制):
memcpy(void* dest, const void* src, size_t num):将src指向的内存区域复制到dest指向的内存区域,复制num个字节。memmove(void* dest, const void* src, size_t num):将src指向的内存区域复制到dest指向的内存区域,即使它们重叠,复制num个字节。strcpy(char* dest, const char* src):将源字符串(src)复制到目标字符串(dest)。strncpy(char* dest, const char* src, size_t num):将源字符串(src)的前num个字符复制到目标字符串(dest)。如果src的长度小于num,则在目标字符串后面添加’\0’直到复制完num个字符。
//memcpy在有些库函数实现时,功能和memmove近乎相同了
void* memcpy(void* s, const void* ct, size_t n)
{
char* so = s;
for (; n--; *so++ = *(char*)ct, ct = (char*)ct + 1)
;
return((void*)s);
}
//与memcpy的区别就是需要判断,被复制的地址与粘贴的地址的前后关系
void* memmove(void* s, const void* ct, size_t n)
{
char* so = s;
if (so > (char*)ct) /* copy from right to left */
{
for (so += n, ct = (char*)ct + n;
n--;
ct = (char*)ct - 1, *--so = *(char*)ct
)
;
}
else /* copy from left to right */
{
for (; n--; *so++ = *(char*)ct, ct = (char*)ct + 1)
;
}
return((void*)s);
}
char* strcpy(char* s1, const char* s2)
{
register char* os1 = s1;
while ((*os1++ = *s2++))
{
/* No action */
;
}
return s1;
}
char* strncpy(char* s1, const char* s2, size_t n)
{
char* os1 = s1;
for (; n > 0 && *s2; --n)
{
*os1++ = *s2++;
}
for (; n-- > 0; )
{
*os1++ = '\0';
}
return s1;
}
Concatenation(连结):
strcat(char* dest, const char* src):将源字符串(src)连接到目标字符串(dest)的末尾。strncat(char* dest, const char* src, size_t num):将源字符串(src)的前num个字符连接到目标字符串(dest)的末尾。
Comparison(比较):
memcmp(const void* ptr1, const void* ptr2, size_t num):比较两个内存区域的前num个字节,返回一个整数表示它们的比较结果。strcmp(const char* str1, const char* str2):比较两个字符串的大小,返回一个整数表示它们的比较结果。strcoll(const char* str1, const char* str2):根据当前区域设置进行字符串的本地化比较,返回一个整数表示它们的比较结果。strncmp(const char* str1, const char* str2, size_t num):比较两个字符串的前num个字符的大小,返回一个整数表示它们的比较结果。strxfrm(char* dest, const char* src, size_t num):根据当前区域设置,将src指向的字符串转换为适合按字典排序的形式,并将结果存储在dest中,最多存储num个字符。
Searching(搜索):
memchr(const void* ptr, int value, size_t num):在给定内存区域中搜索指定值的第一个匹配项,并返回指向该位置的指针。strchr(const char* str, int character):在给定字符串中搜索第一次出现指定字符的位置,并返回指向该位置的指针。strcspn(const char* str1, const char* str2):返回str1中第一个出现str2中任何字符的位置索引。strpbrk(const char* str1, const char* str2):在str1中搜索第一次出现str2中任何字符的位置,并返回指向该位置的指针。strrchr(const char* str, int character):在给定字符串中搜索最后一次出现指定字符的位置,并返回指向该位置的指针。strspn(const char* str1, const char* str2):返回str1中连续包含str2中字符的最长子串的长度。strstr(const char* str1, const char* str2):在str1中查找第一次出现str2的位置,并返回指向该位置的指针。strtok(char* str, const char* delimiters):将字符串分割为多个子字符串,使用指定的分隔符。
Other(其它):
memset(void* ptr, int value, size_t num):将ptr指向的内存区域的前num个字节设置为指定的值。strerror(int errnum):根据给定的错误编号返回相应的错误消息字符串。strlen(const char* str):计算字符串的长度(不包括空字符’\0’)。
文章详细介绍了C语言中用于字符串和数组操作的函数,如复制(memcpy,memmove,strcpy,strncpy)、连接(strcat,strncat)、比较(memcmp,strcmp,strcoll,strncmp)以及搜索(memchr,strchr,etc.)等,展示了这些函数的功能和用法。
4450

被折叠的 条评论
为什么被折叠?



