字符串
1、字符串数组与字符串
1.1、字符数组的定义
-
用来存放
字符
数据的数组就是字符数组,字符数组中的一个元素存放一个字符。char s[5];
1.2、字符数组的初始化
- 在字符数组赋值中,未赋值的默认为
'\0'
- 字符数组中出现
'\0'
,相当于是一个字符串char s[5]={'A','B','C','D','E'}; char s[5]={'A','B'}; char s[]={'A','B','C','D','E'};
1.3、字符数组与字符串
- 数组名是常量不可赋值
- 字符数组可以使用整型赋值,即
ASCII码值
char s[5]={"ABCD"}; 组+串 ("ABCD\0") char s[5]="ABCD"; 组+串 ("ABCD\0") char s[5];s="ABCD"; 错误 (数组名不可以赋值) char s[]="ABCD!"; 组+串 ("ABCD!\0") char s[]={'A','B','C','D'}; 组 ("ABCD")
2、字符串指针
2.1、字符串指针的定义
- char *p;
2.2、字符串指针的赋值
-
char *p=“ABCD”;
-
用字符串给指针赋值,指针只接收字符串的
首地址
char s[]="ABCD",*p=s; *(p+4)='\0'
3、字符串的输入与输出
3.1、利用scanf和printf函数
- 字符串在输出时,遇
\0
结束,\0
不输出char s[]="ABCD"; printf("%c\n",s[2]); printf("%s\n",s); printf("%s\n",s+1); 输出结果: C ABCD BCD char c[5]={'a','b','\0','c','\0'}; printf("%s\n",c); 输出结果: ab
3.2、字符串输入输出函数
带有
空格
的字符串不能用scanf
输入
-
字符串输入函数
gets
-
字符串输出函数
puts
(输出以后会自动换行)char s[80]; gets(s); puts(s);
4、字符串数组
char s[][5]={"ABC","DEF"},*p=&s[0][0];
printf("%s\n",p+5);
输出结果:DEF
5、字符串函数
5.1、字符串长度函数strlen和sizeof函数
-
strlen是测试
字符串长度
函数 -
strlen求字符串长度函数,遇
'\0'
结束,不包括'\0'
strlen("ABCD")=4 strlen("\t\"\xff\065\n")=5 strlen("\141\\141abc\t")=9 strlen("hello\0\t\'\\")=5
-
sizeof求所占的
空间字节数
char s[]="ABCD"; sizeof(s)=5 char t[10]="ABCD"; sizeof(t)=10
5.2、字符串复制函数strcpy
-
形式:strcpy(字符数组1,字符数组2)
-
作用:将
字符数组2
复制到字符数组1
中 -
注意:字符数组1的
长度
不能小于字符数组2的长度char s[20]="ABC"; char t[20]="DEF"; strcpy(s,t); printf("%s,%s\n",s,t); 输出结果:DEF,DEF
5.3、字符串连接函数strcat
-
形式:strcat(字符数组1,字符数组2)
-
作用:把
字符串2
接到字符串1
之后 -
注意:字符数组1必须足够打,以便连接后的新字符串;连接后字符串后面的
'\0'
取消,只保留新串最后的'\0'
char s[20]="ABC"; char t[20]="DEF"; strcat(s,t); printf("%s,%s\n",s,t); 输出结果:ABCDEF,DEF
5.4、字符串比较函数strcmp
-
形式:strcmp(字符串1,字符串2)
-
作用:比较字符串1和字符串2
- 串1>串2返回
1
- 串1>串2返回
-1
- 串1=串2返回
0
- 串1>串2返回
-
注意:两个字符串比较时按
ASCII码值大小
进行比较,不能用关系运算符
比较大小strcmp("ABC","ABB")=1 strcmp("ABC","ACB")=-1 strcmp("ABC","ABC")=0