C语言字符数组与字符串
一、一维字符型数组基础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开始