字符数组和字符串

  • 字符数组
  • 字符串结束标志
  • 字符串长度


字符数组

定义:用来存放字符的数组称为字符数组。

char a[10];//一维字符数组
char b[5][10];//二维字符数组
char  c[20]={'c',' ','p','r'};//给部分数组元素赋值
char d[]={'c', ' ', 'p', 'r', 'o', 'g', 'r', 'a', 'm' };  //对全体元素赋值时可以省去长度

字符数组实际上时一系列字符的集合,也就是字符串。在C语言中,没有专门的字符串变量,没有String类型,通常就用一个字符数组来存放一个字符串。

C语言规定,可以将字符串直接赋值给字符数组

char str[30]={"c.biancheng,net"};
char str[30]="c.biancheng.net";//更加简洁,实际开发中常用

为了方便,也可以不指定数组长度

char str[]={"c.biancheng.net"};
char str[]="c/biancheng.net";

给字符数组赋值时,将字符串一次性地赋值,而不是一个字符一个字符地赋值。

特别注意:字符数组只有在定义时才能将整个字符串一次性地赋值给它,一旦定义完了,就只能一个一个字符地赋值了

char str[7];
str="abc234";//错误,正确的应为char str[7]="abc234";
//正确
str[0]='a';
str[1]='b';
str[2]='c';
str[3]='2';
str[4]='3';
str[5]='4';

字符串结束标志

在C语言中,字符串总是以‘\0’作为结尾,所以’\0’也被称为字符串结束标志,或者字符串结束符。

C语言在处理字符串时,会从前往后逐个扫描字符,一旦遇到’\0’就认为到达了字符串的末尾,就结束处理。

例如,"abc123"从表面看起来只包含了 6 个字符,其实不然,C语言会在最后隐式地添加一个’\0’,这个过程是在后台默默地进行的,所以我们感受不到。

需要注意,逐个字符地给数组赋值并不会自动添加’\0’

char str[]={'a','b','c'};

数组str的长度为3,而不是4,因为最后没有’\0’。

当用字符数组存储字符串时,要特别注意’\0’,要为’\0’留个位置;这意味着,字符数组的长度至少要比字符串的长度大 1。

char str[7]="abc123";

"abc123"看起来只包含了 6 个字符,我们却将 str 的长度定义为 7,就是为了能够容纳最后的’\0’。如果将 str 的长度定义为 6,它就无法容纳’\0’了。

字符串长度

所谓字符串长度,就是字符串包含了多少个字符(不包括最后的结束符’\0’)

  • 在C语言中,使用string.h头文件中的strlen()函数来求字符串的长度,它的用法为:
length strlen(strname);

strname是字符串的名字,或者字符数组的名字;length是使用strlen()后得到的字符串长度,是一个整数

#include <stdio.h>
#include <string.h>  //记得引入该头文件
int main(){
    char str[] = "http://c.biancheng.net/c/";
    long len = strlen(str);
    printf("The lenth of the string is %ld.\n", len);
   
    return 0;
}