昨天给字符型数组的学习开了个头今天继续展开。一、字符型数组应用1统计字符串长度字符串长度\0前面的有效字符个数数组长度数组中元素的个数包含\0strlen函数#include string.h //头文件下面的函数都要用到这个头文件size_t strlen(const char*s)功能计算字符串长度参数s传存放字符串空间的首地址char str[] hello; printf(char lenth %d\n, strlen(str));应用2复制字符串将s1中的值依次赋给s2while (s1[i] ! \0) { s2[i] s1[i]; i; } s2[i] \0;strcpy函数char *strcpy(char *dest, const char *src);功能将src中的字符串拷贝到dest中参数dest目的字符串src源字符串返回值成功返回dest失败返回NULLstrcpy(s2,s1);应用3拼接字符串将s2中的值添加到s1后面int l 0; while (s1[l] ! \0) { l; } int i 0; while (s2[i] ! \0) { s1[l] s2[i]; i; l; } s1[l] \0;strcat函数char *strcat(char *dest, const char *src);功能拼接字符串将src中的字符串拼接到dest中。参数dest目的字符串src源字符串返回值成功返回dest失败返回NULLstrcat(s1,s2);应用4比较字符串字符串比较规则和其他语言规则相同。对两个字符串自左至右逐个字符相比知道出现不同的字符或\0为止。如果全部相同则认为相等做过出现不相同字符以第一个不相同的字符的比较结果为准。int i 0; while (s1[i] s2[i] s1[i] ! \0 s2[i] ! \0) { i; } if (s1[i] s2[i]) { printf(s1 s2\n); }else if (s1[i] s2[i]) { printf(s1 s2\n); }else { printf(s1 s2\n); }strcmp函数int strcmp(const char *s1, const char *s2);功能比较s1和s2参数s1s2返回值s1 s2返回值为0s1 s2返回值为负整数s1 s2返回值为正整数二、二维数组语法数据类型 数组名[常量表达式][常量表达式]int group[5][6];//30个数据分成5组每组6个数据说明1.C语言中并不存在真正的二维数组2.二维数组的本质是一维数组的一维数组3.二维数组解决的是不在一个维度上的问题比如处理表格1.整形二维数组int a[3][4] {};//3*4*448字节初始化int a[3][4] {1,2,3,4,5,6,7,8,9,10,11,12}; //全部初始化 int a[3][4] {{1,2,3,4},{5,6,7,8},{9,10,11,12}}; //按行全部初始化 int a[3][4] {1,2,3,4,5,6}; //部分初始化依次赋值未初始化的元素默认赋0 int a[3][4] {{1,2,3,4},{5,6},{9,10}}; //按行全部初始化二维数组中可以省略的是行数 (第一维)第二维(列数)不能省略省略了就不知道元素类型有多大。int a[][4] {1,2,3,4} ;访问二维数组int a[3][4]// 数组名[行下标][列下标]访问到具体的元素按行优先存储2.字符型二维数组char str[10][12];//10条字符串一条字符串最多有12个字符主要关注的是字符串初始化char str[5][100] {hello,world,china,english,america};赋值strcpy(s[0],hello);gets(s[0]);三、总结今天学习了字符型数组的4个函数这些函数极大精简了代码的篇幅但同时也要熟知不用这些函数该怎么操作有时候笔试面试会考到。在字符型数组的应用中要注意字符串的操作和整型的不同例如赋值需要用strcpy比较需要用strcmp并不能使用、、这些运算符。在写代码的过程中要判断清楚循环的逻辑有的值初始化需要在循环外有的则要放在循环内。