C语言中常用字符串函数介绍

目录

1. 字符串复制与连接函数

2. 字符串比较

3. 字符串查找

4. 字符串分割与替换

5. 字符串长度与填充

6. 字符串填充与转换

7. 内存操作

8. 字符串转化

部分代码展示


1. 字符串复制与连接函数

  • strcpy(char *dest, const char *src)

    • 复制 src 字符串到 dest 中,包括终止符 \0
  • strncpy(char *dest, const char *src, size_t n)

    • 复制 src 的前 n 个字符到 dest 中,不足 n 个字符的部分用 \0 填充。
  • strcat(char *dest, const char *src)

    • 将 src 字符串追加到 dest 字符串的末尾。
  • strncat(char *dest, const char *src, size_t n)

    • 将 src 的前 n 个字符追加到 dest 的末尾。

2. 字符串比较

  • strcmp(const char *str1, const char *str2)

    • 比较 str1 和 str2。返回值小于 0 表示 str1 小于 str2,等于 0 表示相等,大于 0 表示 str1 大于 str2
  • strncmp(const char *str1, const char *str2, size_t n)

    • 比较 str1 和 str2 的前 n 个字符。

3. 字符串查找

  • strchr(const char *str, int c)

    • 查找 str 中首次出现的字符 c。返回指向该字符的指针,如果未找到则返回 NULL
  • strrchr(const char *str, int c)

    • 查找 str 中最后一次出现的字符 c。返回指向该字符的指针,如果未找到则返回 NULL
  • strstr(const char *haystack, const char *needle)

    • 查找 haystack 中首次出现 needle 的位置。返回指向 needle 首次出现位置的指针,如果未找到则返回 NULL

4. 字符串分割与替换

  • strtok(char *str, const char *delim)
    • 将 str 按 delim 中的字符分割成多个子字符串,返回指向第一个子字符串的指针。连续调用以获取所有子字符串。

5. 字符串长度与填充

  • strlen(const char *str)

    • 计算字符串 str 的长度(不包括终止符 \0)。
  • strspn(const char *str1, const char *str2)

    • 计算 str1 开头连续包含 str2 中字符的长度。
  • strcspn(const char *str1, const char *str2)

    • 计算 str1 开头直到首次出现 str2 中字符的长度。
  • strpbrk(const char *str1, const char *str2)

    • 查找 str1 中首次出现 str2 中任何字符的位置。返回指向该字符的指针,如果未找到则返回 NULL

6. 字符串填充与转换

  • sprintf(char *str, const char *format, ...)

    • 格式化字符串并将结果写入 str 中。
  • sscanf(const char *str, const char *format, ...)

    • 从 str 中读取格式化的数据。

7. 内存操作

  • memcpy(void *dest, const void *src, size_t n)

    • 从 src 拷贝 n 字节到 dest 中。
  • memmove(void *dest, const void *src, size_t n)

    • 从 src 移动 n 字节到 dest 中,处理重叠区域时更安全。
  • memset(void *str, int c, size_t n)

    • 将 str 中的前 n 字节设置为 c

8. 字符串转化

  • atoi(const char *str)

    • 将字符串 str 转换为 int 类型。
  • atol(const char *str)

    • 将字符串 str 转换为 long 类型。
  • atoll(const char *str)

    • 将字符串 str 转换为 long long 类型。
  • itoa(int value, char *str, int base)

    • 将 value 转换为字符串,使用指定的进制表示。这个函数是非标准的,通常需要在某些实现中或者使用自定义实现。

部分代码展示

#include <stdio.h>
#include <string.h>
int main() {
    // 初始化字符串
    char str1[50] = "Hello, ";
    char str2[] = "World!";
    char str3[50];
    char *searchResult;
    char str4[] = "are,you,ok";
    char delimiters[] = ",";
    char *token;
    // 字符串复制
    strcpy(str3, str2);
    printf("str3被覆盖为str2 : %s\n", str3);

    // 字符串连接
    strcat(str1, str2);
    printf("str2被拼接到str1: %s\n", str1);

    // 字符串长度
    printf("str1的长度: %d\n", strlen(str1));

    // 字符串比较
    int n = strcmp(str1, str3);
    if (n == 0) {
        printf("str1 == str3\n");
    } else if (n > 0) {
        printf("str1 >= str3\n");
    } else {
        printf("str1 <= str3\n");
    }

    // 查找字符
    searchResult = strchr(str1, 'W');
    if (searchResult) {
        printf("'W'在%s被找到\n", searchResult);
    } else {
        printf("'W'没有在str1被找到\n");
    }

    // 查找子字符串
    searchResult = strstr(str1, "World");
    if (searchResult) {
        printf("'World'在%s被找到\n", searchResult);
    } else {
        printf("'World'没有在str1被找到\n");
    }

    // 字符串分割
    token = strtok(str4, delimiters);//delimiters为"分隔符" 
    while (token != NULL) {
        printf("Token: %s\n", token);
        token = strtok(NULL, delimiters); // 获取下一个token
    }

    // 字符串填充
    memset(str1+1, '*', sizeof(str1) - 1);
    str1[sizeof(str1) - 1] = '\0'; // 确保字符串以 '\0' 结尾
    printf("str1: %s\n", str1);

    return 0;
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值