字符串函数#include <string.h>

函数 作用 返回值
strlen 长度 长度
strcpy 复制 dest地址
strncpy 限制复制 dest地址
strcat 连接 dest地址
strncat 限制连接 dest地址
strcmp 比较 0/正/负
strncmp 比较前n个 0/正/负
strncasecmp(忽略大小写比较前 n 个字符) 0 表示相等,正/负表示 s1 大于/小于 s2(忽略大小写)
strchr 找字符 地址/NULL
strrchr 找最后字符 地址/NULL
strstr 找子串 地址/NULL
strtok 切割 地址/NULL
atoi 转整数 int
atof 转浮点 double
strtol 高级转换 long
memcpy 复制内存 目标地址
memset 填充 目标地址
memcmp 比较内存 0/正/负
cpp 复制代码
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int main() {
    // ---------- strlen ----------
    char s1[] = "Hello";
    printf("strlen(\"%s\") = %zu\n", s1, strlen(s1));  // 5

    // ---------- strcpy ----------
    char dest1[20];
    char src1[] = "Copy me";
    printf("strcpy -> %s\n", strcpy(dest1, src1));     // Copy me

    // ---------- strncpy ----------
    char dest2[20];
    char src2[] = "Too long text";
    strncpy(dest2, src2, 5);
    dest2[5] = '\0';   // 手动添加终止符(否则可能无'\0')
    printf("strncpy (5 chars) -> %s\n", dest2);        // Too l

    // ---------- strcat ----------
    char dest3[20] = "Hello";
    char src3[] = " World";
    printf("strcat -> %s\n", strcat(dest3, src3));     // Hello World

    // ---------- strncat ----------
    char dest4[20] = "Hello";
    char src4[] = " World!";
    strncat(dest4, src4, 3);
    printf("strncat (3 chars) -> %s\n", dest4);        // Hello Wo

    // ---------- strcmp ----------
    char a[] = "abc", b[] = "abd";
    int cmp = strcmp(a, b);
    printf("strcmp(\"%s\", \"%s\") = %d\n", a, b, cmp); // 负值(-1常见)

    // ---------- strncmp ----------
    printf("strncmp(\"%s\", \"%s\", 2) = %d\n", a, b, strncmp(a, b, 2)); // 0(前2个相同)

    // ---------- strchr ----------
    char str[] = "Hello world";
    char *p = strchr(str, 'o');
    printf("strchr('o') -> %s\n", p);                  // o world

    // ---------- strrchr ----------
    p = strrchr(str, 'o');
    printf("strrchr('o') -> %s\n", p);                 // orld(最后一个'o')

    // ---------- strstr ----------
    p = strstr(str, "world");
    printf("strstr(\"world\") -> %s\n", p);            // world

    // ---------- strtok ----------
    char tokStr[] = "one,two,three";
    char *token = strtok(tokStr, ",");
    printf("strtok -> ");
    while (token) {
        printf("%s ", token);
        token = strtok(NULL, ",");
    }
    printf("\n");                                      // one two three

    // ---------- atoi ----------
    char num1[] = "  123";
    printf("atoi(\"%s\") = %d\n", num1, atoi(num1));   // 123

    // ---------- atof ----------
    char num2[] = "3.14";
    printf("atof(\"%s\") = %f\n", num2, atof(num2));   // 3.140000

    // ---------- strtol ----------
    char num3[] = "0x1A";
    char *end;
    long val = strtol(num3, &end, 16);
    printf("strtol(\"%s\", NULL, 16) = %ld\n", num3, val); // 26
     /*

        三个参数:

    参数	作用
    str	    要转换的字符串
    endptr	保存转换结束位置的指针
    base	数字进制

    所以:

    long val = strtol(num3, &end, 16);

    等价于:

    把 num3 按16进制解析成long,并把解析结束的位置保存到end
    */

    // ---------- memcpy ----------
    char srcMem[] = "Copy me";
    char destMem[20];
    memcpy(destMem, srcMem, strlen(srcMem) + 1);
    printf("memcpy -> %s\n", destMem);                 // Copy me

    // ---------- memset ----------
    char fill[10];
    memset(fill, 'A', 5);
    fill[5] = '\0';
    printf("memset -> %s\n", fill);                    // AAAAA

    // ---------- memcmp ----------
    char x[] = "abc", y[] = "abd";
    int mc = memcmp(x, y, 3);
    printf("memcmp(\"%s\", \"%s\", 3) = %d\n", x, y, mc); // 负值

    return 0;
}
相关推荐
SNAKEpc121381 小时前
OpenGL(十一)- 变换管线
c语言·c++·算法·矩阵·图形渲染
小小龙学IT1 小时前
Day 26-27 项目实战:从零构建一个高并发聊天室(epoll + 线程池)
linux·服务器·c语言·开发语言·网络
c238562 小时前
MySQL 基础用法(下):查询进阶与核心特性
android·c语言·c++·mysql
十月的皮皮3 小时前
STM32从零到量产开发:四路继电器工业控制模块开发 - 上位机操作说明书
c语言·stm32·单片机·stm32cubemx
小僧景贤4 小时前
嵌入式C语言 第十一篇:成长路线|嵌入式C工程师完整进阶学习路径(从零到工程级落地|含周期+实战项目)
c语言·开发语言·学习
灵晔君4 小时前
【Linux】进程(四)——进程虚拟地址空间
linux·c语言·开发语言
wengqidaifeng5 小时前
2026 年电赛(TI 杯)控制类 H 题:8 路灰度循迹、直线/半圆分段控制与 S1/S2/S3 状态机
c语言·单片机·嵌入式硬件
天空'之城5 小时前
C 语言工业级通用组件手写 25:简易日志系统
c语言·开发语言·日志系统·嵌入式调试·调试打印
热心网友俣先生6 小时前
2026年华数杯C 题 超详细解题思路
c语言·开发语言·人工智能