C语言中的字符、字符串及内存操作函数详细讲解

news/2025/9/20 18:50:31/文章来源:https://www.cnblogs.com/ll55522201/p/19102725

在C语言中,字符和字符串的处理是基本且重要的概念。字符在C中通常由 char类型表示,而字符串则是以 null终止的字符数组。内存操作函数则提供了基本的内存处理能力,如复制、设置、比较等内存块。

字符操作

字符使用 char类型声明,C语言标准库提供了一系列函数来检查和转换字符。头文件 <ctype.h> 包含了字符操作的函数:

  • isalpha(): 检查参数是否是字母。
  • isdigit(): 检查参数是否是数字。
  • isalnum(): 检查参数是否是字母或数字。
  • isupper(): 检查参数是否是大写字母。
  • islower(): 检查参数是否是小写字母。
  • toupper(): 将小写字符转换为大写。
  • tolower(): 将大写字符转换为小写。

字符串操作

C语言中,字符串本质上是以 null字符('\0')结尾的 char数组。头文件 <string.h> 提供了一系列操作字符串的函数:

  • strlen(): 返回字符串的长度(不包括 '\0')。
  • strcpy(): 复制一个字符串到另一个。
  • strncpy(): 复制指定数量的字符到另一个字符串。
  • strcat(): 连接两个字符串。
  • strncat(): 连接两个字符串,但是可以指定连接的最大长度。
  • strcmp(): 比较两个字符串。
  • strncmp(): 比较两个字符串的前n个字符。
  • strchr(): 查找字符在字符串中的第一个出现。
  • strrchr(): 查找字符在字符串中的最后一个出现。
  • strstr(): 查找子字符串在另一个字符串中的第一个出现。
  • strspn(): 返回字符串中包含的一组字符的最大子串长度。
  • strcspn(): 返回字符串中不包含的一组字符的最大子串长度。
  • strpbrk(): 搜索字符串中任意多个特定字符中的第一个出现。
  • strtok(): 分割字符串为一系列的令牌。

内存操作

C语言提供了几个直接对内存块进行操作的函数,这些函数在 <string.h> 头文件中声明:

  • memcpy(): 从源内存地址复制n个字节到目标内存地址。
  • memmove(): 类似于 memcpy,但是更安全,可以处理源和目标内存区域重叠的情况。
  • memset(): 将一块内存设置为特定的值。
  • memcmp(): 比较内存区域的前n个字节。

例子

以下是字符串和内存操作的简单示例:

#include <stdio.h>
#include <string.h>int main() {char str1[20] = "Example";char str2[20];// 字符串复制strcpy(str2, str1);printf("Copy of String: %s\n", str2);// 字符串连接strcat(str1, " String");printf("Concatenated String: %s\n", str1);// 字符串长度printf("Length of String: %lu\n", strlen(str1));// 内存设置memset(str2, 'A', sizeof(str2) - 1);str2[sizeof(str2) - 1] = '\0'; // 确保字符串是 null 终止的printf("Memory Set String: %s\n", str2);return 0;
}
​
 
 

运行上述代码,将打印出经过操作后的字符串和设置内存后的结果。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/908502.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

06、訊息收集

1、使用nmap探测magedu.com开放的端口号和服务指纹 2、使用指纹识别工具探测magedu.com采用的建站模板 3、搜集magedu.com的子域名有哪些

AI 智能体与 Coze 工作流实践:小红书对标账号采集 - 实践

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

在Linux中设定账户密码的安全性策略

在Linux环境下,确保账户密码的安全性是保护系统安全的重要环节。要设置强健的密码策略,需要从多个层面制定规则,这些包括密码复杂性、长度、有效期限、历史记录限制和尝试次数限制等方面。 密码复杂性设定和管理:密…

对比六种JavaScript全文搜索库 fuse.js 、 lunr 、 flexsearch 、 minisearch 、 search-index 、 js-sea

以下是针对六种JavaScript全文搜索库的对比分析,综合功能特性、性能表现及适用场景: 核心特性对比‌Fuse.js‌‌算法‌:基于Bitap算法的模糊搜索,支持拼写容错和多种匹配模式(前缀、后缀、逻辑组合等)7。 ‌配置…

精选 4 款基于 .NET 开源、功能强大的 Windows 系统优化工具,助力轻松提升 Windows 系统性能与使用体验!

前言 今天大姚给大家推荐 4 款基于 .NET 开源、功能强大的 Windows 系统优化工具,希望可以帮助你轻松提升 Windows 系统性能与使用体验。 Optimizer Optimizer 是一款基于 .NET 开源(GPL-3.0 license)、功能强大的 …

从零开始: c#纯代码实现完整Json解析器的全过程及注释与自定义格式的支持实现

从零开始: c#纯代码实现完整Json解析器的全过程及注释与自定义格式的支持实现大家好!我们要深入探讨一个非常常用的技术:JSON反序列化。别小看这个技术,它可是现代编程中不可或缺的一部。JSON解析不仅仅是简单的数据…

MySQL 32 为什么还有kill不掉的语句?

MySQL有两个kill命令:kill query+线程id,表示终止该线程正在执行的语句;kill (connection)+线程id,表示断开这个线程的连接,如果线程有语句正在执行,会先停止正在执行的语句。有时候可能会遇到:使用了kill,却没…

Axure RP 9 Mac 交互原型设计 - 实践

Axure RP 9 Mac 交互原型设计 - 实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monac…

Ceph IO流程分段上传(1)——InitMultipart - 指南

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

第9章 Prompt提示词设计 - 指南

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

详解Spring Boot DevTools - 指南

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

深入解析:rook-ceph自定义添加osd流程

深入解析:rook-ceph自定义添加osd流程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Mon…

1789:算24

题目 总时间限制: 3000ms 内存限制: 65536kB 描述 给出4个小于10个正整数,你可以使用加减乘除4种运算以及括号把这4个数连接起来得到一个表达式。现在的问题是,是否存在一种方式使得得到的表达式的结果等于24。 这里…

Proxy 库解析(二)

refl meta template <bool IsDirect, class R> struct refl_meta {template <class P>requires(IsDirect)constexpr explicit refl_meta(std::in_place_type_t<P>): reflector(std::in_place_type&l…

【Python3教程】Python3高级篇之JSON材料解析

【Python3教程】Python3高级篇之JSON材料解析2025-09-20 18:04 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: b…

大模型服务之下的新旧政务智能系统比较 - 指南

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

流行的 3D 文件格式及其用途指南

了解 3D 文件格式的重要性 三维 (3D) 技术的市场既广泛又复杂,应用范围从电影后期制作和产品原型制作到虚拟现实 (VR) 和增强现实 (AR) 游戏。该技术各种用例不可或缺的一部分是 3D 文件格式,它决定了 3D 数据…

CentOS7.9上安装MySQL8.4

CentOS 7 已在 2024 年 6 月 30 日结束生命周期 (EOL),官方源已停止维护! CentOS 7 已在 2024 年 6 月 30 日结束生命周期 (EOL),官方源已停止维护! CentOS 7 已在 2024 年 6 月 30 日结束生命周期 (EOL),官方源已…

铁头山羊stm32-HAL库 - 实践

铁头山羊stm32-HAL库 - 实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco",…

IDEA编译Maven任务后target目录没有class

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …