函数字典 · 字符串操作函数

strlen:获取字符串的长度

/*
 * 函数名称: strlen
 * 函数声明: size_t strlen(const char *s);
 * 函数描述: 计算字符串的长度,即字符数组中非空字符的个数。
 * 参数:
 *     - s: 指向以null结尾的字符串的指针
 *
 * 返回值:
 *     字符串的长度,不包括null终止符。
 *
 * 使用示例:
 *     const char *str = "Hello, world!";
 *     size_t length = strlen(str);
 */

strcpy:复制字符串

/*
 * 函数名称: strcpy
 * 函数声明: char *strcpy(char *dest, const char *src);
 * 函数描述: 复制字符串,将src所指向的字符串复制到dest所指向的位置,包括null终止符。
 * 参数:
 *     - dest: 目标字符数组的指针
 *     - src: 源字符串的指针
 *
 * 返回值:
 *     dest的值,即复制后的字符串的指针。
 *
 * 注意事项:
 *     - 目标字符数组dest必须有足够的空间来存储源字符串src和null终止符。
 *     - src和dest的内存区域不能重叠。
 *
 * 使用示例:
 *     char dest[20];
 *     const char *src = "Hello, world!";
 *     strcpy(dest, src);
 */

strcat:连接字符串

/*
 * 函数名称: strcat
 * 函数声明: char *strcat(char *dest, const char *src);
 * 函数描述: 将源字符串src追加到目标字符串dest的末尾,形成一个新的字符串,即将src的内容复制到dest的尾部,并添加null终止符。
 * 参数:
 *     - dest: 目标字符数组的指针
 *     - src: 源字符串的指针
 *
 * 返回值:
 *     dest的值,即连接后的字符串的指针。
 *
 * 注意事项:
 *     - 目标字符数组dest必须有足够的空间来存储连接后的字符串和null终止符。
 *     - src和dest的内存区域不能重叠。
 *
 * 使用示例:
 *     char dest[30] = "Hello, ";
 *     const char *src = "world!";
 *     strcat(dest, src);
 */

strcmp:比较字符串

/*
 * 函数名称: strcmp
 * 函数声明: int strcmp(const char *s1, const char *s2);
 * 函数描述: 比较两个字符串s1和s2的大小,返回一个整数值表示比较结果。
 * 参数:
 *     - s1: 第一个要比较的字符串的指针
 *     - s2: 第二个要比较的字符串的指针
 *
 * 返回值:
 *     返回值为0,则s1和s2相等;
 *     返回值小于0,则s1小于s2;
 *     返回值大于0,则s1大于s2。
 *
 * 注意事项:
 *     - 比较是按照字典序进行的。
 *     - 如果两个字符串长度不相等,那么只比较较短的部分。
 *
 * 使用示例:
 *     const char *str1 = "Hello";
 *     const char *str2 = "Hello";
 *     int result = strcmp(str1, str2);
 */

strncmp:比较字符串的前n个字符

/*
 * 函数名称: strncmp
 * 函数声明: int strncmp(const char *s1, const char *s2, size_t n);
 * 函数描述: 比较两个字符串s1和s2的前n个字符的大小,返回一个整数值表示比较结果。
 * 参数:
 *     - s1: 第一个要比较的字符串的指针
 *     - s2: 第二个要比较的字符串的指针
 *     - n: 要比较的字符数
 *
 * 返回值:
 *     返回值为0,则s1的前n个字符与s2的前n个字符相等;
 *     返回值小于0,则s1的前n个字符小于s2的前n个字符;
 *     返回值大于0,则s1的前n个字符大于s2的前n个字符。
 *
 * 注意事项:
 *     - 比较是按照字典序进行的。
 *     - 如果s1和s2的字符数小于n,则只比较有效字符数部分。
 *
 * 使用示例:
 *     const char *str1 = "Hello";
 *     const char *str2 = "Help";
 *     int result = strncmp(str1, str2, 3);
 */

strstr:在字符串中搜索子串

/*
 * 函数名称: strstr
 * 函数声明: char *strstr(const char *haystack, const char *needle);
 * 函数描述: 在字符串haystack中搜索子串needle的第一次出现位置,返回一个指向该位置的指针。
 * 参数:
 *     - haystack: 要搜索的字符串
 *     - needle: 要找到的子串
 *
 * 返回值:
 *     返回第一个匹配的子串出现位置的指针,如果未找到则返回NULL。
 *
 * 使用示例:
 *     const char *str = "Hello, world!";
 *     const char *subStr = "world";
 *     char *result = strstr(str, subStr);
 */

strchr:在字符串中搜索字符

/*
 * 函数名称: strchr
 * 函数声明: char *strchr(const char *s, int c);
 * 函数描述: 在字符串s中搜索字符c的第一次出现位置,返回一个指向该位置的指针。
 * 参数:
 *     - s: 要搜索的字符串
 *     - c: 要找到的字符
 *
 * 返回值:
 *     返回第一个匹配的字符出现位置的指针,如果未找到则返回NULL。
 *
 * 使用示例:
 *     const char *str = "Hello, world!";
 *     char c = 'o';
 *     char *result = strchr(str, c);
 */
 ps:跟strstr的功能差不多,但感觉strstr更为好用点。

strtok: 分割字符串

/*
 * 函数名称: strtok
 * 函数声明: char *strtok(char *str, const char *delim);
 * 函数描述: 分割字符串str为一系列子字符串,使用delim中的字符作为分隔符。
 * 参数:
 *     - str: 要分割的字符串
 *     - delim: 分隔符字符串
 *
 * 返回值:
 *     第一次调用返回指向被分割的子字符串的指针,后续的调用传入NULL则返回下一个子字符串的指针,如果没有更多的子字符串则返回NULL。
 *
 * 注意事项:
 *     - strtok会修改传入的str字符串,将分隔符替换为null终止符。
 *     - 在第一次调用时,传入要分割的字符串,并将返回的指针存储下来。后续调用则传入NULL。
 *
 * 使用示例:
 *     char str[] = "Hello, world!";
 *     const char *delim = ", ";
 *     char *token = strtok(str, delim);
 *
 *     while (token != NULL) {
 *         printf("%s\n", token);
 *         token = strtok(NULL, delim);
 *     }
 */

memset:设置内存块的值

/*
 * 函数名称: memset
 * 函数声明: void *memset(void *ptr, int value, size_t num);
 * 函数描述: 将给定内存块的前num个字节设置为特定的值。
 * 参数:
 *     - ptr: 指向要设置的内存块的指针
 *     - value: 要设置的值,通常为字符或0
 *     - num: 要设置的字节数
 *
 * 返回值:
 *     返回指向ptr的指针。
 *
 * 使用示例:
 *     char buffer[10];
 *     memset(buffer, 0, sizeof(buffer));
 */

memcpy:复制内存块

/*
 * 函数名称:memcpy
 * 函数声明:void *memcpy(void *dest, const void *src, size_t n);
 * 函数描述:将源内存块src的内容复制到目标内存块dest中,复制n个字节。
 * 参数:
 *     - dest:目标内存块的指针
 *     - src:源内存块的指针
 *     - n:要复制的字节数
 *
 * 返回值:
 *     返回指向dest的指针。
 *
 * 注意事项:
 *     - dest和src的内存区域不能重叠,否则复制的结果将是不确定的。
 *
 * 使用示例:
 *     char src[10] = "Hello";
 *     char dest[10];
 *     memcpy(dest, src, sizeof(src));
 */

strncpy:复制字符串的部分内容

/*
 * 函数名称: strncpy
 * 函数声明: char *strncpy(char *dest, const char *src, size_t n);
 * 函数描述: 将源字符串src的前n个字符复制到目标字符串dest中,如果src的长度小于n,则在复制完后用null字符填充dest剩余的空间。
 * 参数:
 *     - dest: 目标字符串的指针
 *     - src: 源字符串的指针
 *     - n: 要复制的字符数
 *
 * 返回值:
 *     返回指向dest的指针。
 *
 * 注意事项:
 *     - 如果src的长度小于n,则在复制完所有src字符后,用null字符填充dest剩余的空间。
 *     - 如果src的长度大于或等于n,则dest不会以null字符终止。
 *     - 如果n大于dest的大小,可能会发生缓冲区溢出,请确保dest有足够的空间来存储复制的字符。
 *
 * 使用示例:
 *     char src[] = "Hello";
 *     char dest[10];
 *     strncpy(dest, src, sizeof(dest) - 1); // 确保dest以null字符终止
 *     dest[sizeof(dest) - 1] = '\0'; // 手动添加null字符
 */

strncat:连接部分字符串

/*
 * 函数名称:strncat
 * 函数声明:char *strncat(char *dest, const char *src, size_t n);
 * 函数描述:将源字符串src的前n个字符连接到目标字符串dest的末尾,返回指向dest的指针。
 * 参数:
 *     - dest:目标字符串的指针
 *     - src:源字符串的指针
 *     - n:要连接的字符数
 *
 * 返回值:
 *     返回指向dest的指针。
 *
 * 注意事项:
 *     - dest必须有足够的空间来存储要添加的字符,以及最后的null字符。
 *     - 如果src的长度小于n,则连接完后用null字符终止dest。
 *     - 如果src的长度大于或等于n,则dest不会以null字符终止。
 *     - 如果n大于dest的大小,可能会发生缓冲区溢出,请确保dest有足够的空间来存储连接的字符。
 *
 * 使用示例:
*      char dest[10] = "Hello";
*      char src[] = "World!";
*
*      strncat(dest, src, sizeof(dest) - strlen(dest) - 1);
*      dest[sizeof(dest) - 1] = '\0'; // 手动添加空字符终止 
*
*      printf("%s\n", dest); // 输出:HelloWorl
*/

strpbrk:在字符串中查找特定字符的任何一个匹配

/*
 * 函数名称:strpbrk
 * 函数声明:char *strpbrk(const char *str, const char *charset);
 * 函数描述:在字符串str中查找charset中的任何一个字符的第一次出现位置,返回一个指向该位置的指针。
 * 参数:
 *     - str:要搜索的字符串
 *     - charset:要匹配的字符集合字符串
 *
 * 返回值:
 *     返回第一个匹配的字符出现位置的指针,如果未找到则返回NULL。
 *
 * 使用示例:
 *     const char *str = "Hello, world!";
 *     const char *charset = "do";
 *     char *result = strpbrk(str, charset);
 *
 *     printf("%s\t%ld\n", result, result - str);
 */

strrchr:在字符串中查找最后一个匹配的字符

/*
 * 函数名称:strrchr
 * 函数声明:char *strrchr(const char *str, int c);
 * 函数描述:在字符串str中从最后一个字符开始查找字符c的第一次出现位置,返回一个指向该位置的指针。
 * 参数:
 *     - str:要搜索的字符串
 *     - c:要找到的字符
 *
 * 返回值:
 *     返回最后一个匹配的字符出现位置的指针,如果未找到则返回NULL。
 *
 * 使用示例:
 *     const char *str = "Hello, world!";
 *     char c = 'o';
 *     char *result = strrchr(str, c);
 */

strcoll:比较字符串的排序顺序

/*
 * 函数名称:strcoll
 * 函数声明:int strcoll(const char *str1, const char *str2);
 * 函数描述:按照当前环境的区域设置对字符串str1和str2进行比较,返回比较结果的顺序值。
 * 参数:
 *     - str1:要比较的第一个字符串
 *     - str2:要比较的第二个字符串
 *
 * 返回值:
 *     如果str1小于str2,则返回负值;
 *     如果str1大于str2,则返回正值;
 *     如果str1等于str2,则返回0。
 *
 * 注意事项:
 *     - strcoll函数使用当前的区域设置来确定字符的排序顺序。
 *
 * 使用示例:
 *     const char *str1 = "apple";
 *     const char *str2 = "banana";
 *     int result = strcoll(str1, str2);
 */
 ps:strcoll()strcmp()函数在表面上看起来相似,都是用于比较两个字符串。然而,它们在实际功能和用途上是有区别的。

    strcmp()函数是C标准库中的字符串比较函数,用于按照字典顺序比较两个字符串。它会逐个字符进行比较,并返回一个表示比较结果的整数值。
    如果两个字符串相等,返回值为0;如果第一个字符串小于第二个字符串,返回值为负数;如果第一个字符串大于第二个字符串,返回值为正数。这种比较方式适用于简单的ASCII字符集排序。

    strcoll()函数也是C标准库中的字符串比较函数,但其功能更为强大。它使用当前本地化环境对两个字符串进行排序和比较。
    不同于简单的字典顺序比较,strcoll()函数会根据当前地域设置(如语言、国家、字符编码等)进行字符串排序,并考虑特定字符排序规则(如大小写、重音符号、特殊字符等)。
    这使得strcoll()函数能够在具有不同语言环境的应用程序中正确处理国际化和多语言文本排序。

    因此,可以将strcoll()视为更加通用和具有本地化支持的字符串比较函数,而strcmp()则更适用于基本的字典顺序比较。具体选择哪个函数取决于您的需求和程序运行环境。

版本:v1.0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值