尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
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); } } } ​
RELATED

相关推荐

GEO优化哪个机构靠谱

GEO优化哪个机构靠谱

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

📅 2026/9/17 17:23:55
练习实验之----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/8/23 1:46:38
C++11类型转换:static_cast、dynamic_cast、const_cast、reinterpret_cast详解

C++11类型转换:static_cast、dynamic_cast、const_cast、reinterpret_cast详解

1. 项目概述:为什么C11要重塑类型转换? 如果你写过一段时间的C,尤其是维护过一些老代码,肯定对 (int)ptr 、 (MyClass*)voidPtr 这种C风格的类型转换不陌生。它们用起来简单直接,一个括号搞定,但背后隐…

📅 2026/8/23 1:46:38
MORE NEWS

更多资讯

📰

pandoc 定义列表与代码块往返转换:four_space_rule 扩展的缩进语义剖析

pandoc 定义列表与代码块往返转换:four_space_rule 扩展的缩进语义剖析 【免费下载链接】pandoc Universal markup converter 项目地址: https://gitcode.com/gh_mirrors/pa/pandoc 导读 本文以仓库中的命令级测试用例 test/command/11542.md 为核心&#x…

📰

Aptos MoveFlow 规范推断语料样本解析:AX-dead-mans-switch-operations-001 与死信开关批量订单清理

Aptos MoveFlow 规范推断语料样本解析:AX-dead-mans-switch-operations-001 与死信开关批量订单清理 【免费下载链接】aptos-core Aptos is a layer 1 blockchain built to support the widespread use of blockchain through better technology and user experienc…

📰

Taro 跨端样式转换:babel-plugin-transform-react-jsx-to-rn-stylesheet 深度指南

Taro 跨端样式转换:babel-plugin-transform-react-jsx-to-rn-stylesheet 深度指南 【免费下载链接】taro 开放式跨端跨框架解决方案,支持使用 React/Vue 等框架来开发微信/京东/百度/支付宝/字节跳动/ QQ 小程序/H5/React Native 等应用。 项目地址: h…

📰

STM32F103实时FFT频谱显示实战:DMA+定点FFT+标准库优化

1. 项目概述:为什么在STM32F103上硬啃实时FFT频谱显示是个“反直觉”的选择?你搜“STM32F103 FFT 频谱显示”,十有八九会看到一堆“建议换F4/F7”“F103带不动”“放弃吧”的劝退帖。我第一次做这个项目时,手边只有三块淘宝五块钱…

📰

CANN PTO-ISA 指令详解:TMATMUL_BIAS 带偏置的 Tile 级矩阵乘法实现与使用指南

CANN PTO-ISA 指令详解:TMATMUL_BIAS 带偏置的 Tile 级矩阵乘法实现与使用指南 【免费下载链接】pto-isa Parallel Tile Operation (PTO) is a virtual instruction set architecture designed by Ascend CANN, focusing on tile-level operations. This repository…

📰

TiXL 导出独立可执行文件(Player)完整指南:从编辑器到一键分发

TiXL 导出独立可执行文件(Player)完整指南:从编辑器到一键分发 【免费下载链接】t3 TiXL is an open source software to create realtime motion graphics. 项目地址: https://gitcode.com/GitHub_Trending/t3/t3 TiXL(T3…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

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

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

📞 💬