对于字符,在计算机内部都是用数字(字符编码)来表示的,而字符串是“字符连续排列”的一种表现。字符串就是每个元素内都存储着字符的一维数组,通常称之为字符数组。
在 C语言中,因为字符数组的元素内存储的都是 char 型的字符,所以字符数组的数据类型是 char 型,因而字符串实际上就是一个 char 型的一维数组(见图 1 )。
字符串中包含的字符的个数就是这个字符串的长度。C语言中用字符数组存储字符串时在字符串的末端都要加一个字符“\0”来表示这个字符串的结束,这个“\0”称为字符串结束符。因而在定义字符数组时,数组大小应为要存储的字符串长度的最大值加 1。
C语言中字符数组的声明(定义)及初始化格式如下:
#include <stdio.h>
int main( )
{
char myName[20];
char string[6] = {'C','h','i','n','a','\0'};
char month[10] = "September";
char month2[ ] = "September";
}
定义用于存储字符串的字符数组时,一定要预留足够的字符数组空间容纳最长的字符串,而且还要多增加一个字符空间用于存放字符串结束符‘\0’。
给已经定义好的字符数组中存储字符串(字符串赋值)时,我们不可以使用上述字符数组声明(定义)部分所用的各种初始化字符串的方法。前面讲到的几种初始化字符串的方法,只能在声明(定义)字符数组的时候使用。
在程序其他部分给字符串赋值,必须一次一个字符地赋值给对应的数组元素,或者使用字符串赋值函数 strcpy( ) 来实现(代码清单 2)。
下面的语句将把字符串“April”赋值给已经定义好的字符数组 month:
在 C语言程序中,经常会用到字符串的长度。要获得一个字符串的长度通常可以可使用下面两种方法:
1) 使用 strlen(str) 函数: //求字符数组 str 中存储的字符串的长度
2) 使用 sizeof(str) 操作符: //计算字符数组 str 在内存中所占的字节数
操作符 sizeof( ) 用于计算对象在内存中所占的字节数。一个字符占一个字节,字符串数组的末尾还有字符串结束符‘\0’也占一个字节,所以用 sizeof(str) 获得的是字符数组 str 的有效元素数量(数组大小),包含字符串结束符‘\0’,它比存储在里面的字符串的实际长度大 1 (见图 2 )。
在使用 strcpy() 和 strlen() 的 C 程序中,必须在程序的预处理指令部分添加指令包含 string.h 头文件:
#include <stdio.h>
#include <string.h>
int main( )
{
char string[6];
char month[10];
string[0] = 'C';
string[1] = 'h';
string[2] = 'i';
string[3] = 'n';
string[4] = 'a';
string[5] = '\0';
strcpy(month,"July"); //给字符数组 month 赋值
int month_len = strlen(month); //求字符串"July"的长度 4
int month_len2 = sizeof(month); //获得字符数组 month 有效元素个数 5(包含字符串结束符'\0')
}