在C语言中没有设置专门的字符串数据类型,通常使用一维字符数组存放一个字符串,使用二维数组存放多条字符串。
字符串是由若干字符组成的,以字符‘\0’作为结束标识符的一个符号序列。
字符串“Hello”的实际长度为5,但是在计算机内存中占用6个存储单元,因为字符串“Hello”隐含有结束表示‘\0’
字符数组的赋值与使用:
1、指定长度的字符数组的赋值和使用
str[12] = {'h','e','l','l','o',' ','w','o','r','l','d','!'};
str[13] = {'h','e','l','l','o',' ','w','o','r','l','d','!'};
如果{ }中的字符数大于设定的数组大小,则会保存,如果{ }中的字符数小于设定的数组大小,那么数组中没有指定元素的位置将会被‘\0’填充,那么此时的字符数组相当于字符串,被当作字符串的字符数组就能使用以下C提供的关于字符串的操作。
2、未指定长度的字符数组的赋值和使用
str[ ] = {'h','e','l','l','o',' ','w','o','r','l','d','!'};
str[13] = {'h','e','l','l','o',' ','w','o','r','l','d','!','\0'};
上面的两个 表达式其实是等价的,字符数组都会被当作字符串,因为以‘\0’结尾。
作为字符串的字符数组能够一次性整体引用:
str[13] = {'h','e','l','l','o',' ','w','o','r','l','d','!'};
str[ ] = {'h','e','l','l','o',' ','w','o','r','l','d','!'};
str[13] = {'h','e','l','l','o',' ','w','o','r','l','d','!','\0'};
printf("%s",str);
puts(str);
上面三个字符数组其实是等价的,都被当做字符串。
字符串操作的一些函数:
strcat(字符串1,字符串2) 将字符串1的结束符'\0'删除,将字符串接到字符串1的尾部,返回改变后的字符串的首地址。如果字符串1是字符数组的话,数组的大小要足够容纳拼接后的字符串。
strcpy(字符串1,字符串2) 将字符串2中的字符逐个放到字符串1中的相对位置,如果字符串2的长度比字符串1大或者相等,字符串1会被完全覆盖,如果字符串2的长度比字符串1短,那么字符串1尾部的字符不会被替代。
strlen(字符串) 返回字符串的实际程度,即不包含'\0'结束符