C语言一维字符数组 二维整型数组今天重点学习一维字符数组和二维整型数组调试字符串拼接踩了一堆坑把知识点整理记录下来夯实C语言基础✨一维字符数组字符串C语言本身没有string字符串类型字符串本质就是以 \0 结束的一维char字符数组 \0 是字符串结束标志系统靠它判断字符串到哪里终止没有结束符输出就会出现随机乱码。1.初始化两种写法char str[20] {hello};char str[20] {h,e,l,l,o,\0};双引号初始化会自动在末尾补 \0 大括号单个字符赋值必须手动加上 \0 。2.输入输出使用 %s 可以直接对数组整体读写不需要循环逐个字符。⚠gets函数已经被废弃尽量使用fgetsfgets有大坑会把按下回车产生的 \n 换行符一并读到数组内部。做字符串拼接、字符串比较的时候换行符会藏在字符串中间导致代码逻辑看起来完全失效需要手动把 \n 替换成 \0 。3.手写字符串拼接不使用strcat库函数逻辑先用while循环遍历找到第一个字符串 \0 所在下标字符串末尾从这个位置开始把第二个数组的字符逐个复制过来全部复制完成后一定要手动追加 \0 。自己写代码的时候犯过错直接从数组下标0开始复制把原本的字符串全部覆盖拼接直接失败调试很久才定位到问题。二维整型数组二维整型数组可以类比一张表格 int arr[行][列] 本质是数组里面存放一维数组。1.初始化方式①全部赋值 int arr[3][2]{{1,2},{3,4},{5,6}};②简写赋值 int arr[3][2]{1,2,3,4,5,6};③部分初始化没有赋值的元素系统自动默认补0。行下标可以省略列下标绝对不能省略。2.元素访问格式 arr[i][j] i代表行下标j代表列下标下标全部从0开始计数。比如3行2列数组行取值0~2列取值0~1访问超出范围下标数组越界程序会异常。3.遍历输出必须两层循环嵌套外层循环控制行内层循环控制列。plaintextfor(int i0;i3;i) //遍历每一行{for(int j0;j2;j) //遍历当前行每一列{printf(%d ,arr[i][j]);}printf(\n);}今日踩坑总结1.字符数组千万留意 \0 结束符漏掉直接乱码2.fgets读取回车换行符是隐藏陷阱3.字符串拼接不能从数组开头拷贝要跳到原有字符串末尾4.二维数组列下标不可省略下标从0开始警惕数组越界数组是C语言非常核心的部分很多底层操作都离不开还要多加练习