C语言字符数组与字符串
📅 2026/7/29 2:14:20
👁️ 阅读次数
📝 编程学习
一、一维字符型数组基础
C语言没有独立的字符串类型,字符串依靠字符数组存储,末尾必须自带结束标记 ‘\0’ 。
- 定义格式
char 数组名[元素个数];
数组空间要预留1字节,专门存放字符串结束符。 - 初始化方式
- 完整初始化: char str[6] = {“hello”};
- 简写形式: char str[6] = “hello”;
- 逐个赋值: char str[6] = {‘h’,‘e’,‘l’,‘l’,‘o’,‘\0’};
- 局部初始化:未赋值的元素默认补0,等价于 ‘\0’
- 省略长度: char str[] = “hello”; ,编译器自动计算数组长度
- 空间区分
- sizeof() :获取整个数组占用的总字节大小
- strlen() :统计有效字符串字符数量,不计入 \0
二、字符串输入输出函数
- printf(“%s”, str) :格式化打印字符串,读到 \0 停止
- puts(str) :输出字符串,结束自动换行
- scanf(“%s”, str) :读取字符串,遇到空格停止接收
- gets() :已经被标准废弃,存在缓冲区溢出风险,推荐替换为 fgets
三、四大字符串库函数
- strlen :计算字符串有效长度
- strcpy :字符串拷贝,目标数组空间必须足够大
- strcat :字符串拼接,把源字符串追加到目标字符串末尾
- strcmp :字符串逐位ASCII对比
- 返回0:两个字符串完全相等
- 返回大于0:第一个字符串更大
- 返回小于0:第二个字符串更大
四、手写字符串功能(不调用库函数)
- 手动求字符串长度
循环遍历字符,直到遇到 ‘\0’ ,统计循环次数即为长度。
- 手动字符串拷贝
循环读取源数组字符,逐个赋值给目标数组,最后手动补上结束符。
- 手动字符串拼接
先找到第一个字符串末尾 \0 ,再把第二个字符串的字符依次赋值到后面。
- 手动字符串比较
逐一对位比较ASCII值,字符不同直接返回差值;全部相等且长度一致判定字符串相同。
五、二维数组基础
- 定义格式: int a[行数][列数];
- 存储规则:行优先连续存放,先存满一行再存下一行
- 初始化特点:可以省略行数,列数绝对不能省略
- 访问方式: 数组名[行下标][列下标] ,下标从0开始
编程学习
技术分享
实战经验