C 字符串与内存操作函数速查

函数参数说明作用
strlen(str)str — 目标字符串计算字符串长度,不包含 '\0'
memmove(dst, src, n)dst — 目标地址(destination)
src — 源地址(source)
n — 要移动的字节数
移动 n 字节,允许内存区域重叠
memcpy(dst, src, n)dst — 目标地址(destination)
src — 源地址(source)
n — 要复制的字节数
复制 n 字节,不允许内存区域重叠(重叠时行为未定义)
memset(dst, value, n)dst — 目标地址(destination)
value — 要填充的值(转为 unsigned char)
n — 要填充的字节数
将一段内存的每个字节填充为指定值
strcpy(dst, src)dst — 目标缓冲区(destination)
src — 源字符串(source)
复制 C 风格字符串,包括结尾的 '\0'
strcmp(a, b)a — 字符串 A
b — 字符串 B
比较两个 C 风格字符串,相等返回 0
strchr(str, ch)str — 被搜索的字符串
ch — 要查找的字符
在字符串中查找字符,返回首次出现的位置指针
strstr(str, sub)str — 被搜索的字符串(haystack)
sub — 要查找的子串(needle)
在字符串中查找子串,返回首次出现的位置指针

⚠️ 注意: memmove 和 memcpy 的区别——当 src 和 dst 的内存区域有重叠时,必须用 memmove,因为它会先拷贝到临时缓冲区再写入,保证正确性;memcpy 不处理重叠情况,可能导致数据损坏。

函数名全称拆分英文原意
strlenstr = string;len = lengthstring length 字符串长度
memmovemem = memory;movememory move 内存移动
memcpymem = memory;cpy = copymemory copy 内存复制
memsetmem = memory;setmemory set 内存填充
strcpystr = string;cpy = copystring copy 字符串复制
strcmpstr = string;cmp = comparestring compare 字符串比较
strchrstr = string;chr = characterstring character 在字符串查找字符
strstrstr = string;第二个 str = substringstring substring 在字符串查找子串
  1. str 开头 → 只处理「C 风格字符串」,依赖 \0 结束标记;
  2. mem 开头 → 纯粹操作内存块,不识别字符串结束符,按字节数量处理;
  3. 通用缩写约定:
    • cpy = copy
    • cmp = compare
    • chr = character
    • len = length
    • sub = substring

相关内容