字符串操作
字符串函数头文件<string.h>
对字符串进行操作可以自己写代码实现或者调用string库函数
获取字符串长度
区分数组的长度和字符串的长度
char s[]="hello";//s的长度——数组的长度:6
char s[10]="hello";//s的长度——数组的长度:10
'h' 'e' 'l' 'l' 'o' '\0'
字符串长度:'\0'前面字符个数。"hello"字符串长度:5,所占内存空间的字节数: 6
int i = 0;
while(s[i]!='\0')
++i;//i的值就是s的长度
strlen
size_t strlen(const char *s);
功能:计算字符串长度
参数:s表示需要一个指针。
可以给的参数类型:数组名、字符串常量
返回值:字符串长度
字符串复制
while(s1[i]!='\0')
{
s2[i] = s1[i];
i++;
}
strcpy
char *strcpy(char *dest,const char *src)
功能:复制字符串(将src中字符串,复制到dest)
参数:源字符串src——可以给的实参:一维字符数组名、字符串常量
目的字符串dest——可以给的实参:一维字符数组名
字符串拼接
while(s1[i]!='\0')
{
i++;
}
while(s2[k]!='\0')
{
s1[i]=s2[k];
i++;
k++;
}
strcat
char *strcat(char *dest, const char *src);
功能:拼接字符串
参数:源字符串src——可以给的实参:一维字符数组名、字符串常量
目的字符串dest——可以给的实参:一维字符数组名
字符串比较
int i=0,j=0;
while(!(s1[i]!=s2[j]||s1[i]=='\0'||s2[j]=='\0'))
{
i++;
j++;
}
if(s1[i]==s2[j])
{
printf("s1=s2\n");
}
else if(s1[i]>s2[j])
{
printf("s1>s2\n");
}
else
{
printf("s1<s2\n");
}
printf("strcmp(s1,s2)=%d\n",strcmp(s1,s2));
strcmp
int strcmp(const char *s1, const char *s2);
功能:比较字符串大小
参数:s1——字符串 s2 ——字符串
可以给的实参:数组名 、字符串常量
返回值: 最后 停的位置上字符的差值 来反映大小
s1 > s2 :>0 1
s1 == s2 :0
s1 < s2 : <0 -1
二维数组
二维数组用途:处理一些图片
数组定义
二维数组:
类型说明符 数组名[常量表达式][常量表达式]
(1) (2) (3) (4)(1) 类型说明符 ——用来说明数组中存储数据的类型
(2) 数组名 ——标识符
(3) 常量表达式 —— 行 :多少行
(4) 常量表达式——列 :多少列
eg:
int a[3][4];表示定义了一个包含有3行 4列 总共12个 int型元素的二维数组
数组初始化
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};//部分初始化
int a[3][4] = {{1,2},{5,6},{9,10}};//全部初始化
数组赋值
循环、scanf输入值
数组元素的引用
数组名[行][列];
- 注意:
- c语言中,并不存在真正的二维数组,都是用一维数组模拟的
- 二维数组的本质:实际上是 一维数组类型的一维数组 (数组的数组)
- 二维数组数据存储时,按行优先存储
- 多维数组:n维数组——n-1维数组类型的 一维数组