C语言基础:字符数组
一维字符数组应用 存储字符串。1.定义类型 数组名[整形常量]; 整形常量 数组的容量表示可以储存多少个字符 类型 char c语言规定字符串必须使用\0 作为结束标准。 如果你要在数组中储存一个 hello , hello\0 共计6个字符空间 char string[100]; ​ ​2.访问数组名[整形表达式]str[0] a;char c str[0];使用下标 运算符 [] ,整形表达式 ,常量变量表达式-》 整形 。下标从 0 开始下标的范围 0 - 有效长度 (从下标0 开始 到字符串\0 之前的有效字符长度);字符数组 也是数组不能整体操作 。除非调用函数。char str[10]; str hello; // error 不能整体赋值。// 访问 写入 // 下标从0 开始, 长度 5 ,从下标0 开始 到字符串\0 之前的有效字符长度 str[0] h; // str[0] char str[1] e; str[2] l; str[3] l; str[4] o; str[5] \0; // \0 不可以省略 ​ // 读出 数组元素 putchar(str[0]); // h printf(%c\n,str[1]);//e char c str[4]; // 字符数组 不可整体操作 //str world; puts(str); // 字符串整体输出 被输出的字符串一定是以\0 结尾 printf(str is %s\n,str);3.初始化// 全部初始化 char str1[6]{h,e,l,l,o,\0}; // a 字符常量 1字符 1byte char str2[6]{hello}; // hello 字符串常量默认是有\0 char str3[6]hello; // 用的多 ​ // 局部初始化 ,剩下没有给处值的都是\0 char str4[10]{h,e,o,\0}; // \0 建议手动加上。 char str5[10]{hel}; char str6[10]hello; // 常用 char str7[10]{0}; // 常用空串 ​ 0; // 数字0 \0 ; //字符串结束标志 0 ‘\0’ 在内存中存储的 都是 0 0; //字符0 ascii 48 0x30 ​ char str8[]{h,e,l};// 不是字符串字符数组没有\0 char str9[]{hello}; char str10[]hello; char str11[]{0}; // 不要写成这种遍历char str[10]{0}; printf(sizeof str[10] is %lu\n,sizeof(str)); printf(sizeof str[0] is %lu\n,sizeof(str[0])); int i 0 ; int len 0 ; // 遍历的输入 for(i0;i10 - 1 ;i) // \0 { scanf(%c,str[i]); if(# str[i]) { break; } len; ​ } str[len]\0; //遍历的输出 for(i0;ilen;i ) // { putchar(str[i]); } ​字符串相关的常用函数函数名功能备注strlen获得字符串有效字符长度 size_t strlen(const char *s);strcpy字符串的复制从一个数组到另一个数组 char *strcpy(char *dest, const char *src);strcat字符串的拼接 char *strcat(char *dest, const char *src);strcmp字符串的比较比较字符串的内容是否一致 int strcmp(const char *s1, const char *s2);strlen char str[100]{0}; // char [] char * printf(input string); gets(str); //int len strlen(str); // 有效字符的个数 // int len 0; ​ while(1) { if(\0!str[len]) { len; } else { break; } } ​ 注意 strlen 和sizeof 的区别 1. strlen 函数 需要外部支持 c语言标准库 sizeof 关键字 不需要额外的支持 直接就能用 2. 相对字符数组 strlen 有效字符的个数 单位字节 sizeof 获得数组在内存中的大小 单位字节strcpy int main() { //char str1[100]hello; char str1[100]{0}; printf(input string:); gets(str1); char str2[100]{0}; ​ // 不能整体操作 // str2 str1; // 把str1 的内容 复制到 str2 //strcpy(str2,str1); int i 0 ; while(1) { str2[i] str1[i]; if(\0 str1[i]) { break; } i; } puts(str2); return 0; } 注意 目标数组的大小要能容纳的下源数组的的内容。否则 数组越界。后续行为不确定(可能可以继续运行也可能程序崩溃但从逻辑上已经错误)。 ​strcat ​ int main() { ​ char str1[100]hello;//dst char str2[100],world;//src //strcat(str1,str2); // int i 0 ; int j 0 ; while(1) // 找到 str1的结束的地方 { if(\0!str1[i]) { i; } else { break; } } ​ while(1)// 开始拼接 { str1[i] str2[j]; if(\0 str2[j]) { break; } i; j; } printf(strcat str1:%s\n,str1); ​ } ​strcmp 比较两个字符串的内容是否一致 ​ int main() { char str1[100]hello; char str2[100]aaaaa; char str3[100]hello; ​ // 不能写成这样这个不是比较 str1,str2 的字符串内容 /* if(str1 str2) { }*/ #if 0 // 系统函数的使用 int ret 0; ret strcmp(str1,str2); printf(str1 cmp str2 ret %d\n,ret); ​ ret strcmp(str1,str3); printf(str1 cmp str3 ret %d\n,ret); #endif ​ int i 0 ; int ret 0 ; while(1) { ret str1[i] - str3[i]; if(0ret str1[i]!\0) { i; } else { break; } } printf(ret is %d\n,ret); ​ } ​ ​二维字符数组应用存储多个字符串。二维数组 可以被称为 数组的数组。 数组的元素又是一个数组的结构。语法定义数据类型 数组名[行数][列数] 一维数 二维数 行数列数整型常量char str[3][100] ;访问, 通过下标运算符 [], 从0 开始表示第一个元素。 不要越界char str[3][100] ; 最后一个元素的下标位置 str[2][99] ​ str[0] ,表示第一个字符数组 数组名 str[0][0], 表示第一个字符数组里的第一个字符元素存储 特性单一性连续性有序初始化char str1[3][50]{hello,ok,how}; char str2[3][50]{{hello},{ok},{how}}; char str3[3][50]{0} ; // 常用 char str4[3][50]{{0}}; char str5[][50]{hello,ok,123}; //一维大小可以省略二维不能省 //char str6[3][]{hello,ok,123}; ​字符串 逆序排序//逆序 for(i0;isize/2;i) { strcpy(t,str[i]); strcpy(str[i],str[size-1-i]); strcpy(str[size-1-i],t); } ​ //排序 sort int j 0 ; for(jsize-1;j0;j--) { for(i0;ij;i) { if(strcmp(str[i],str[i1])0) { strcpy(t,str[i]); strcpy(str[i],str[i1]); strcpy(str[i1],t); } } } ​

相关新闻

GEO优化哪个机构靠谱

GEO优化哪个机构靠谱

在选择 GEO 优化机构时,以下几个方面可以帮助你判断其是否靠谱:机构的背景和资质成立时间:成立时间较长的机构通常在行业内积累了更多的经验和资源。例如合肥拓路人信息科技有限公司,2016 年 4 月成立,十年的时间里专注…

2026/9/26 14:40:21 阅读更多 →
练习实验之----NAT

练习实验之----NAT

本实验包含源NAT、NAT Server、双向NAT方式实验拓扑需求1、client1(移动用户)访问web-server通过Fw的GE1/0/1接口访问 2、client3(电信用户)访问web-server通过Fw的GE1/0/2接口访问 3、内网用户即可以通过域名访问web-server,也可以通过私网IP访问 4、web-server设备…

2026/9/24 14:56:16 阅读更多 →
Java内存溢出全解析:从JVM内存模型到实战排查与优化

Java内存溢出全解析:从JVM内存模型到实战排查与优化

1. 项目概述:从“内存溢出”告警到问题根因定位如果你写过Java程序,大概率在某个深夜被控制台突然蹦出的OutOfMemoryError或者StackOverflowError搞得头皮发麻。这不仅仅是新手才会遇到的麻烦,随着系统复杂度提升、数据量激增,即便…

2026/9/24 14:46:06 阅读更多 →

最新新闻

群辉做网站服务器python到底多少钱?避坑指南

群辉做网站服务器python到底多少钱?避坑指南

群辉做网站服务器python到底多少钱?避坑指南 模板网站太丑不够用,想自己用Python搞个服务器部署,到底要花多少钱?这是很多刚入行的东北前端兄弟常问我的问题。别急,咱们今天不整那些虚头巴脑的理论,直接上干货,把成本算得明明白白,让你心…

2026/9/27 10:57:02 阅读更多 →
Agilent 53150A微波频率计原理与高精度测量实践

Agilent 53150A微波频率计原理与高精度测量实践

1. 这台“老将”到底能干啥?——Agilent 53150A不是万能表,但它是频率测量领域的“精密标尺”Agilent 53150A 频率计,这个名字在电子测试实验室里,尤其是做射频、微波、时钟源校准和通信系统验证的工程师嘴里,从来不是…

2026/9/27 10:57:02 阅读更多 →
5557连接器选型与供应商对比实战指南

5557连接器选型与供应商对比实战指南

干硬件和供应链这行,最烦的就是找料。芯片缺、电阻涨价这些还能忍,最容易被忽视的反而是连接器这种不起眼的玩意儿——画原理图的时候它就是一个小方块,等要打样、要量产了才发现,同样写着“5557-2P”,有的厂报价几分钱…

2026/9/27 10:57:02 阅读更多 →
Ubuntu 22.04 / 24.04 / 26.04 更换国内阿里源完整教程(区分 DEB822 新 / 旧源格式)

Ubuntu 22.04 / 24.04 / 26.04 更换国内阿里源完整教程(区分 DEB822 新 / 旧源格式)

前言随着 Ubuntu 版本迭代,APT 软件源配置分为两种格式:传统单行 sources.list 格式与全新 DEB822 标准格式,不同版本配置文件路径、写法完全不同,混用会直接报格式错误。Ubuntu22.04:仅使用 /etc/apt/sources.list 老…

2026/9/27 10:57:02 阅读更多 →
驱动能跑却会崩?量产级嵌入式驱动的稳定性攻坚指南

驱动能跑却会崩?量产级嵌入式驱动的稳定性攻坚指南

在实际的驱动开发项目里,"驱动能跑了"和"驱动没问题了"是两句经常被混为一谈的话。如果你做嵌入式开发的时间够长,一定遇到过我前面描述的那一幕:代码在开发板上调通了,串口输出正常,功能测试全过…

2026/9/27 10:57:02 阅读更多 →
pixi 全局清单(Global Manifest)完全指南:pixi-global.toml 的结构、位置与全部配置项

pixi 全局清单(Global Manifest)完全指南:pixi-global.toml 的结构、位置与全部配置项

开发工具CLI包管理器任务调度 【免费下载链接】pixi Powerful system-level package manager for Linux, macOS and Windows written in Rust – building on top of the Conda ecosystem. 项目地址: https://gitcode.com/gh_mirrors/pi/pixi 点击查看 免费下载 pi…

2026/9/27 10:56:02 阅读更多 →

日新闻

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解 【免费下载链接】spirula-studio Cross-vendor 3D Gaussian Splatting trainer - video to splat to mesh, Vulkan or CUDA. 项目地址: https://gitcode.com/GitHub_Trending/sp/spirula-studio Sp…

2026/9/27 0:00:34 阅读更多 →
SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南 模板网站太丑不够用?别急着加滤镜,那是治标不治本。很多老板盯着后台流量掉得眼红,却还在纠结首页Banner的圆角是不是3像素。这就像穿着西装去挖土,姿势不对,努力白费。我整理这份 速查手册…

2026/9/27 0:00:34 阅读更多 →
FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏 【免费下载链接】FireRed-OpenStoryline FireRed-OpenStoryline is an AI video editing agent that transforms manual editing into intention-driven directing through natural language …

2026/9/27 0:00:34 阅读更多 →

周新闻

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解 【免费下载链接】spirula-studio Cross-vendor 3D Gaussian Splatting trainer - video to splat to mesh, Vulkan or CUDA. 项目地址: https://gitcode.com/GitHub_Trending/sp/spirula-studio Sp…

2026/9/27 0:00:34 阅读更多 →
SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南 模板网站太丑不够用?别急着加滤镜,那是治标不治本。很多老板盯着后台流量掉得眼红,却还在纠结首页Banner的圆角是不是3像素。这就像穿着西装去挖土,姿势不对,努力白费。我整理这份 速查手册…

2026/9/27 0:00:34 阅读更多 →
FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏 【免费下载链接】FireRed-OpenStoryline FireRed-OpenStoryline is an AI video editing agent that transforms manual editing into intention-driven directing through natural language …

2026/9/27 0:00:34 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/27 9:12:14 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/25 20:29:31 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/26 22:52:30 阅读更多 →