C语言字符数组与字符串

📅 2026/7/29 2:14:20 👁️ 阅读次数 📝 编程学习
C语言字符数组与字符串

一、一维字符型数组基础

C语言没有独立的字符串类型,字符串依靠字符数组存储,末尾必须自带结束标记 ‘\0’ 。

  1. 定义格式
    char 数组名[元素个数];
    数组空间要预留1字节,专门存放字符串结束符。
  2. 初始化方式
  • 完整初始化: char str[6] = {“hello”};
  • 简写形式: char str[6] = “hello”;
  • 逐个赋值: char str[6] = {‘h’,‘e’,‘l’,‘l’,‘o’,‘\0’};
  • 局部初始化:未赋值的元素默认补0,等价于 ‘\0’
  • 省略长度: char str[] = “hello”; ,编译器自动计算数组长度
  1. 空间区分
  • sizeof() :获取整个数组占用的总字节大小
  • strlen() :统计有效字符串字符数量,不计入 \0

二、字符串输入输出函数

  1. printf(“%s”, str) :格式化打印字符串,读到 \0 停止
  2. puts(str) :输出字符串,结束自动换行
  3. scanf(“%s”, str) :读取字符串,遇到空格停止接收
  4. gets() :已经被标准废弃,存在缓冲区溢出风险,推荐替换为 fgets

三、四大字符串库函数

  1. strlen :计算字符串有效长度
  2. strcpy :字符串拷贝,目标数组空间必须足够大
  3. strcat :字符串拼接,把源字符串追加到目标字符串末尾
  4. strcmp :字符串逐位ASCII对比
  • 返回0:两个字符串完全相等
  • 返回大于0:第一个字符串更大
  • 返回小于0:第二个字符串更大

四、手写字符串功能(不调用库函数)

  1. 手动求字符串长度

循环遍历字符,直到遇到 ‘\0’ ,统计循环次数即为长度。

  1. 手动字符串拷贝

循环读取源数组字符,逐个赋值给目标数组,最后手动补上结束符。

  1. 手动字符串拼接

先找到第一个字符串末尾 \0 ,再把第二个字符串的字符依次赋值到后面。

  1. 手动字符串比较

逐一对位比较ASCII值,字符不同直接返回差值;全部相等且长度一致判定字符串相同。

五、二维数组基础

  1. 定义格式: int a[行数][列数];
  2. 存储规则:行优先连续存放,先存满一行再存下一行
  3. 初始化特点:可以省略行数,列数绝对不能省略
  4. 访问方式: 数组名[行下标][列下标] ,下标从0开始