1.字符数组的定义和初始化
char 数组名[数组长度]
例:
int main()
{
//和普通数组相同的初始化
char arr[5];//没有初始化,5个值是随机值
char brr[5] = { 'a','b','c','d','e' };//5个长度,分别初始化为a,b,c,d,e
char crr[5] = { 'a','b','c' };//只初始化一部分,剩余元素会自动初始化为 0(对于字符数组,即'\0')
char drr[] = { 'a','b','c' };//根据后面的长度自动推导
//字符数组特有的初始化形式
char err[5] = { "abcd" };//""表示字符串,''表示字符
char frr[5] = "abcd"; //和上面一样
char str7[] = "abcd";
const char* str8 = "abcd";//字符串常量
}
由于brr也是一个数组,那么还是通过下标修改其元素的值
brr[0] = 'x';
brr[1] = 'y';
brr[2] = 'z';
2.字符串
用""包括的字符序列,可以包含0个或者多个字符.其末尾包含一个隐含的结尾标识字符'\0'。
字符串只需要满足以下两个条件其中一点即可。
1.用""表示;如"abc".
2.字符数组中包含'\0'。
int main()
{
char arr[] = "abc";//里面包含\0
char brr[4] = { 'a','b','c','\0' };
printf("%s\n", brr);//%s用于输出字符串
}
3.字符数组和字符串的区别
字符数组是否为字符串:1.如果有""(双引号包括起来的)肯定是
2.看有没有'\0',有就是字符串,没有就不是字符串
例:
int main()
{
char arr[] = { 'a','b','c','d' };//字符数组不是字符串
char brr[] = "abcd";//字符串
printf("%s\n", brr);//%s用于输出字符串
char crr[] = { 'a','b','c','d','e','\0' };//字符数组也是字符串
char drr[10] = { 'a','b','c' };//只初始化一部分,剩余部分为'\0',是字符数组也是字符串
char err[10] = "abcd\0ef";//遇到\0结束输出只输出abcd
printf("%s\n", err);
}
4.字符串函数
4.1字符串拷贝函数 strcpy()
源字符串(被复制的字符串)必须是以
'\0'
结尾的合法 C 字符串
例:
int main()
{
char arr[10] = "abcd";
char brr[10];
strcpy(brr, arr);//把arr内容拷贝复制到brr中
printf("%s\n", brr);
}
4.2字符串链接函数 strcat()
注:两个指针必须都是以字符串结尾标识符(\0)结尾的
例:
int main()
{
char arr[10] = "abcd";
char brr[10]="xyz";
strcat(brr, arr);//把arr链接到brr后中
printf("%s\n", brr);
}
4.3字符串长度 strlen()
注:"abc"->3 所见即所得,但实际长度为abc\0为4.
int main()
{
char arr[] = "abc";
int count = 0;
for (int i = 0; arr[i] != '\0'; i++)
count++;
printf("count=%d\n", count);
}
4.4字符串比较大小
4.4.1 strcmp()
例:
int main()
{
char arr[] = "abc";
char brr[] = "abb";
int s = strcmp(arr, brr);
printf("%d\n", s);
}
4.4.2 strncmp()
例:
int main()
{
char arr[] = "abc";
char brr[] = "abb";
int s = strncmp(arr, brr,3);
printf("%d\n", s);
}