【C语言】#include<string.h>

文章详细介绍了C语言中用于字符串和数组操作的函数,如复制(memcpy,memmove,strcpy,strncpy)、连接(strcat,strncat)、比较(memcmp,strcmp,strcoll,strncmp)以及搜索(memchr,strchr,etc.)等,展示了这些函数的功能和用法。


在这里插入图片描述
该头文件定义了一些用于 操作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’)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Q_hd

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值