C语言数组与字符串
学习笔记
一、数组
一维数组
数组定义
定义的一般形式为
类型说明符 数组名[常量表达式]
注意:C语言不允许对数组的大小做动态定义,即数组定义时[ ]中不允许是变量
一维数组的初始化
(1)定义时对全部元素赋值
全部赋值时可以不指定数组长度,此时数组长度默认与初始化时赋值长度一致
int a[5]={1,2,3,4,5};
int a[]={1,2,3,4,5};//数组长度与上面一致(2)定义时部分赋值
定义时也可以不赋值
凡是未初始化的数组元素系统默认初始化为0(字符型数组初始化为’\0’,指针型数组初始化为NULL,即空指针)
二维数组
定义
二维数组定义的一般形式为
类型说明符 数组名[常量表达式][常量表达式]
引用
数组名[下标][下标]
(1)下标应是整形表达式如:a[2-1][2*2-1]
(2)下标不可以超过数组的最大范围
二维数组的初始化
(1)将所有数据写在一个花括号内
int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
int a[][4]={1,2,3,4,5,6,7,8,9,10,11,12};//只可以省略行下表,列下标不可省(2)分行分括号赋值
int a[3][4]={ {1,2,3},{4,5,6},{7,8,9},{10,11,12} };
int a[][4]={ {1,2,3},{4,5,6},{7,8,9},{10,11,12} ;(3)对部分元素赋值
int a[3][4]={ {1,3},{4,5},{7,8,9},{ } };
int a[][4]={ {1,3},{4,5},{7,8,9},{ } };//可以省去第一维的长度但是要分行赋值字符数组
初始化
char c[]={'h','a','p','p','y'};
char c[]={"happy"};
char c[]="happy";字符串
在C语言中,是将字符串作为字符数组来处理的。而字符串也没有定义相应变量的关键字,所以C语言对于字符串的定义往往是借助字符数组来实现的。C语言规定字符串的结束标志为’\0’。
基本操作
1、定义
char str[]=”hello world”;
2、输入输出
字符串可以通过格式占位符%s输入、输出
char str[];
scanf ("%s",&str);
printf("%S",str);还可以使用字符串处理函数 puts() gets().
字符串处理函数
输出字符串函数
1. puts(字符数组)
2. 输入字符串函数
gets(字符数组)
3. 字符串连接函数
strcat(字符数组1,字符数组2)
把字符串2连接到字符串1后面,结果放在字符数组1中。
4. 字符串复制函数
strcpy(字符数组1,字符串2)
(1)字符数组应该定义的足够大,以便容纳被复制的字符串2
(2)“字符数组1”必须写成数组名形式(如:str1),“字符串2”可以是字符数组名也可以是一个字符串常量
strncpy(字符数组1,字符串2,n)
将前面n个字符复制到字符数组1中去。
5. 字符串比较函数
strcmp(字符串1,字符串2)
(1)如果全部字符相同,则认为两个字符串相等
(2)如果出现不同的字符,则以第一对不同的字符的比较结果为准。
- (1)如果字符串1与字符数串2相同,则函数值为0
- (2)如果字符串1>字符数串2,则函数值为一个正整数
- (3)如果字符串1<字符数串2,则函数值为一个负整数
6. 测字符串长度的函数
strlen(字符数组)
8. 转换为小写的函数
strlwr(字符串)
7. 转换为大写的函数
strlwr(字符串)