C 标准库 - `<string.h>`

C 标准库 - <string.h>

概述

<string.h> 是 C 语言标准库中的一个头文件,它包含了用于字符串操作的函数。这些函数主要用于处理以 null 结尾的字符串,即以 '\0' 字符结束的字符数组。<string.h> 提供了一系列函数,用于执行字符串的复制、连接、比较、搜索等操作。

主要函数

字符串复制

  • strcpy(s1, s2);:将字符串 s2 复制到字符串 s1 中,包括终止的 null 字符。
  • strncpy(s1, s2, n);:将 s2 的前 n 个字符复制到 s1 中。如果 s2 的长度小于 n,则 s1 的剩余部分将填充 null 字符。

字符串连接

  • strcat(s1, s2);:将字符串 s2 连接到字符串 s1 的末尾,s1 必须有足够的空间来存放结果字符串。
  • strncat(s1, s2, n);:将 s2 的前 n 个字符连接到 s1 的末尾。

字符串比较

  • strcmp(s1, s2);:比较字符串 s1s2,如果 s1 小于 s2 返回负数,如果相等返回 0,如果 s1 大于 s2 返回正数。
  • strncmp(s1, s2, n);:比较 s1s2 的前 n 个字符。

字符串搜索

  • strstr(s1, s2);:在字符串 s1 中查找字符串 s2 的第一次出现。
  • strchr(s1, c);:在字符串 s1 中查找字符 c 的第一次出现。
  • strrchr(s1, c);:在字符串 s1 中查找字符 c 的最后一次出现。

字符串长度

  • strlen(s);:计算字符串 s 的长度,不包括终止的 null 字符。

其他函数

  • memset(s, c, n);:将 s 的前 n 个字符设置为字符 c
  • memcpy(s1, s2, n);:从 s2 复制 n 个字符到 s1
  • memmove(s1, s2, n);:从 s2 复制 n 个字符到 s1,即使源地址和目标地址重叠也是安全的。

使用注意事项

  • 使用 strcpystrcat 等函数时,需要确保目标字符串有足够的空间来存储结果,以避免缓冲区溢出。
  • strlen 函数计算的是字符串的实际长度,不包括终止的 null 字符。
  • <string.h> 中的函数都是对 null 结尾的字符串进行操作的,如果处理的不是 null 结尾的字符串,需要使用 mem* 类函数。

示例代码

#include <stdio.h>
#include <string.h>

int main() {
    char str1[20] = "Hello";
    char str2[] = " World";
    char str3[40];

    strcpy(str3, str1);
    strcat(str3, str2);

    printf("str3: %s\n", str3);
    printf("Length of str3: %zu\n", strlen(str3));

    return 0;
}

输出:

str3: Hello World
Length of str3: 11

总结

<string.h> 是 C 语言中处理字符串的重要工具,提供了丰富的函数来简化字符串操作。在使用这些函数时,需要注意字符串的长度和目标缓冲区的大小,以避免潜在的安全问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值