一,*****字符串函数
1.字符串拷贝函数
char *strcpy(char *dest, const char *src);
功能:
将src中字符串拷贝到dest中
用法:
strcpy(dest,src); //dest是一个字符数组的数组名
//src 可以是字符数组数组名
//或 字符串常量
eg:
char dest[10];
char src[10] = "hello";
strcpy(dest,src); //src 数组名
strcpy(dest,"china"); //src是字符串常量
2.字符串拼接
char s1[20] = "hello";
char s2[20] = "world";
思路:
1.找到 目的字符串中 '\0'位置
2.复制
3.考虑 是否需要 添加'\0' 作为结束标志
strcat
char *strcat(char *dest, const char *src);
功能:
将src中的字符串拼接到dest中
参数:
@dest 拼接的目的字符串
@src 拼接的源字符串
使用:
char dest[100] = "world";
char src[] = "hello";
strcat(dest,src); //src是一个字符数组数组名
strcat(dest,"hello");//src是一个字符串常量
3.字符串的比较:
"hello"
"help"
字符串比较的规则与其他语言中的规则相同,
即:
对两个字符串自左至右逐个字符相比(按ASCII码值大小比较),
直到出现不同的字符或遇到'\0'为止。
如全部字符相同,则认为相等;
若出现不相同的字符,则以第一个不相同的字符的比较结果为准。
"hello"
"help"
"hello" //遇到 '\0'
"hello"
char s1[] = "hello";
char s2[] = "help";
实现功能:
while() //循环 //循环的条件 s1[i] == s2[i] s1[i] !='\0' s2[i] != '\0'
{
}
//停了之后
判断停止位置上的字符的大小关系
函数:
strcmp
int strcmp(const char *s1, const char *s2);
功能:
比较s1 和 s2 字符串的大小
参数:
@s1 ---第一个字符串
@s2 ---第二个字符串
返回值:
> 0 s1 > s2
< 0 s1 < s2
==0 s1 == s2
说明:
这个函数,直接将最后停的位置上的字符 做了差
不适用库函数,实现strcat
二,二维数组(难点,但不是重点)
1.语法:
类型说明符 数组名 [常量表达式][常量表达式]
类型说明符 --- 就是表示数组中要存储的数据的类型
数组名 --- 起名字 符合 标识符 定义 的规则
//数组名所代表的类型 --- 去掉名字后剩下就是对应的类型
//数组名所代表的值 --- 首元素的地址
[常量表达式] --- 两个常量表达式 表示的就是二维数组
eg:
int a[3]; //一维整型数组 ---表示定义了一个 有3个int型元素的 一维整型数组
int a[3][4]; //二维整型数组
2.理解二维数组:
//理解1
int a[行数][列数];
int a[3][4]; //定义了 3行 4列 总共包含了12个int型变量的数组
二维数组的本质:
二维数组,本质上,其实就是一维数组的一维数组
c语言中,并不存在,真正的二维数组,本质上都是一维数组
c语言对二维数组采用这样的定义方式,
使得二维数组可被看作是一种特殊的一维数组:
它的元素又是一个一维数组。
例如,
可以把a看作是一个一维数组,它有3个元素:
a[0] a[l] a[2],每个元素又是一个包含4个元素的一维数组
其实,a[0],a[1],a[3] 就是内部一维数组的数组名
int a[3][4];
int a[3]; //一维整型数组
//a的数据类型 int[3]
类型说明符 数组名[常量表达式];
int[3] a[4];//一维数组,这个一维数组的元素类型 int[3]
//含义上来说,就是一个二维数组
//一维数组 的 一维数组
int a[4][3]; //标准的c的语法
int a[2][3][4];
int[3][4] a[2];
------------------
3.二维数组使用:
//初始化
int a[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12}; //全部初始化
int a[3][4] = {{1,2,3,4},{0},{9,10,11,12}}; //按行初始化
int a[3][4] = {1,2}; //部分初始化
int a[3][4] ;//未初始化 默认随机值(垃圾值)
//赋值的方式
int a[3][4];
for (i = 0; i < 3; ++i)
{
for (j = 0;j < 4; ++j)
{
//a[i][j] = 表达式; //方式1
scanf("%d",&a[i][j]);
}
}
4.注意:
1.二维数组中,也可以是可变长数组
int a[n][n]; //n可以是个变量 ,但是使用时,数组不能初始化
2.二维数组中,可以省略行数,列数不能省略
int a[3][4];
//3可以省略 4不能省略
int[4] a[]; //本质上省略的还是一维数组的长度
二维字符型数组:
char s[3][4]; //3行 4列 的一个 char类型二维数组
//一个存放了 3个 char[4]这种类型的一维数组
char s1[10] = "hello"; //char [10] 一维数组类型
char s2[10] = "hello";
char s3[10] = "hello";
char s4[10] = "hello";
char s5[10] = "hello";
//理解的本质--但是c语言不支持这样的语法形式
char[10] str[5]; //一维数组 有5个 char[10] 这种类型的数据
char str[5][10]; //
注意:
1. 二维字符型数组, 主要用于存放 多个字符串
2.
char s[10];
gets(s);