尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
C语言中借助char数组对字符串的简易操作
概述本文以字符反转字符统计大小写转换为例借助char数组对字符类型数据进行处理手把手教授有关技巧。核心概念char类型数据用来表示单个字符但它的本质是小整数类型。ASC码是一种字符编码标准规定了用哪些数字来表示英文字母、数字、标点符号和控制字符。标准库函数toupper基本用法它接受一个 int 类型的参数如果该参数代表一个小写字母就返回其对应的大写字母否则原样返回该参数限制只接受unsigned char类型数据或等于EOF标准库定义的宏意为文件结束大小写转换由于C语言中没有string类型数据Java中存在。那么我们通常将英文字符转换为ASC码来对字符进行处理。如小写a的ASC码为97而大写a的ASC码为65。在ASC编码表中字母的小写与大写恒存在一个32的差值。那么我们就可以用这个特点进行最简单的大小写转换的编写代码示例# include stdio.h # include string.h int main() { printf(输入个数字表示你接下来要输入的字符串长度); int a 0; scanf(%d, a);//输入的字符长度会赋给数组让数组准确保存字符 char arr[a 1];//设立数组保存数据 scanf(%s, arr);//输入字符 int c 0; for (int i 0; i a; i) { c arr[i] - 32; arr[i] c; }//用遍历数组的方式将数组中的小写转换为大写 printf(%s, arr); return 0; }而上面的方法只能做到将全为小写字母的字符串转换为大写字母不具备分辨能力。这时我们需要引用一个标准库函数来实现对大小的分辨toupper。代码示例# include stdio.h # include ctype.h int main() { char arr[1000];//设立char数组保存数据 scanf(%s, arr);//输入数据 for (int i 0; arr[i] ! \0; i) { arr[i] (char)toupper((unsigned char)arr[i]); }//将小写字母转化为大写 printf(%s, arr); return 0; }字符统计其实现的基本思路是先用char数组储存字符串再另一个int数组来统计字符。将char数组内的字符对应的ASC码作为int数组的下标来实现统计代码示例# include stdio.h int main() { char arr[1024]; int f[256] {0}; scanf(%1023s, arr);//字符串输入 for (int i 0; arr[i] ! \0; i) {//中间的判断含义为遍历char数组当char数组中某一项等于空字符时循环终止 f[(unsigned char)arr[i]];//第i项的字母的ASC码等于int数组内这一项ASC码作为下标。并使其1 } for (int i 0; i 256; i) { if (f[i] 0) { printf(%c %d\n, i, f[i]); }//输出全部字符的统计数据 } return 0; }要注意的是该方法只能统计由符号数字英文字母组成的字符串。而汉字组成的字符串无法用char数组保存。因为char数组每个元素只能保存单字节的信息而汉字是多字节信息编码。所以在无法保存的基础上统计便无从说起。要对汉字进行统计则要使用UTF-8 字符统计。字符反转字符反转的基础版便是将char数组中存储的数据进行交换。代码示例# include stdio.h int main() { char arr[1000] {0}; scanf(%999s, arr); int c 0;//int数据保存字符串长度 for (int i 0; i 1000; i) { if (arr[i] ! 0) { c; }//这个for循环用遍历数组统计输入的字符串长度 } for (int i 0; i c / 2; i) { int b arr[c - 1 - i]; arr[c - 1 - i] arr[i]; arr[i] b; }//交换字符。但需注意用函数输入的字符串末尾会有一个占位符\0表示字符串结束因此交换时需要先-1 printf(%s \n, arr); return 0; }进阶方式便是用双指针原地交换法也是效率最高的方式由于本文仅涉及借助char数组对字符串类数据的操作不涉及指针因此暂且不论。
RELATED

相关推荐

证书链不完整修复方法(进阶篇):原理、方案与优化

证书链不完整修复方法(进阶篇):原理、方案与优化

本文深入探讨证书链不完整修复方法(进阶篇),涵盖背景分析、原理剖析、实战步骤、配置示例、优化建议和避坑指南。随着业务规模增长,证书链不完整修复方法(进阶篇)的重要性日益凸显。无论你是刚入门还是资深…

📅 2026/10/6 16:05:59
缓存雪崩事故复盘(进阶篇):从入门到实战完整指南

缓存雪崩事故复盘(进阶篇):从入门到实战完整指南

本文深入探讨缓存雪崩事故复盘(进阶篇),涵盖背景分析、原理剖析、实战步骤、配置示例、优化建议和避坑指南。很多团队在故障排查实战场景中都会遇到与缓存雪崩事故复盘(进阶篇)相关的挑战。本文结合生产环境经验&#…

📅 2026/10/6 16:05:59
担忧员工操作速度快,跟不上?合米科技 AI SOP 视觉 200ms 高速推理同步核验工序。

担忧员工操作速度快,跟不上?合米科技 AI SOP 视觉 200ms 高速推理同步核验工序。

摘要产线员工作业节奏快,是 AI 视觉落地的一大挑战。深圳合米科技 AI SOP 视觉防错系统搭载自研算法,实现 200ms 高速推理,采用连续流式识别,紧跟工位节拍,实时比对 SOP 工序,杜绝延迟漏判,保障…

📅 2026/10/6 16:05:59
MORE NEWS

更多资讯

📰

MySQL日期与时间戳转换全攻略:从类型原理到踩坑排查

接手过统计后台的都知道,最怕的不是SQL写不出来,而是表里的时间字段类型五花八门。前阵子我就遇到一张日志表,建表时图省事把create_time定义成varchar,结果按月统计要靠字符串截取函数拼接,从源库导过来的数据有的带毫…

📰

MySQL日期时间转换全攻略:DATE与TIMESTAMP互转及避坑指南

1. 前缀:为什么大家都在折腾日期转换 先问你一个问题:如果把数据库里的 20240806 这个字符串,和 2024-08-06 17:30:00 这个标准日期,直接用 > 比较大小,结果会是什么? 很多人第一反应是“能比较”…

📰

从影刀RPA到MySQL:内置包、Xpath与数据入库实战解析

我是那种拿到影刀RPA高级操作题会先焦虑半天的选手,尤其看到题目里同时出现“内置包”“Xpath”“MySQL”这三个词。因为单独考任何一个,都能靠背指令糊弄过去,放在一起就成了连环坑。这道题的网络题目描述很简单:使用影刀RPA内置…

📰

Superpowers:基于Web的多人协作游戏开发平台实战解析

如果你是个没事就爱翻翻开源社区的人,大概率见过这个名字:Superpowers。它在某些榜单上被归为"游戏开发工具",但又和Unity、Godot这些传统IDE画风明显不一样——因为这玩意儿连窗口程序都不是,它跑在浏览器里&#xff0…

📰

Agent-Reach 实战:CLI AI Agent 从环境搭建到并发部署

1. 从零认识 Agent-Reach:一个把 AI Agent 拉进终端的 CLI 工具第一次看到 Agent-Reach 这个名字,我下意识把它和市面上那些"套壳聊天框"归到了一类。直到我把它的定位、关键词和一堆相关热词摆在一起看——CLI、AI Agent、Python、并发、部署…

📰

OpenShell深度体验:跨平台终端统一与插件开发实战

说实话,一开始我对“OpenShell”这种名字是带着一点警惕的。毕竟终端圈子里的工具多如牛毛,光是把PowerShell、Zsh、Fish、Nushell这些老面孔折腾明白就够喝一壶了,再来一个新东西,第一反应往往是“又一个大而全的轮子”。但真正上…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬