在C语言中,是将字符串作为字符数组来处理的。例如,如下程序:
#include <stdio.h>
int main()
{
char c[15]={'I',' ','a','m',' ','a',' ','s','t','u','d','e','n','t','.'};
int i;
for(i=0;i<15;i++){
printf("%c",c[i]);
}
printf("\n");
return 0;
}
输出:
就是用一个一维的字符数组来存放字符串“I am a student.”的,字符串中的字符是逐个存放到数组元素中的。在该例中,字符串的实际长度与数组长度相等。
在实际工作中,人们关心的往往是字符串的有效长度而不是字符数组的有效长度。例如,定义一个字符数组长度为100,而实际有效字符只有40个。为了测定字符串的实际长度,C语言规定了一个“字符串结束标志”,以字符串“\0”作为结束标志。如果字符数组中存有若干字符,前面9个字符都不是空字符(’\0‘),而第10个字符是’\0‘,则认为数组中有一个字符串,其有效字符为9个。也就是说,在遇到字符’\0‘时,表示字符串结束,把它前面的字符组成一个字符串。
C系统在用字符数组存储字符串常量时会自动加一个’\0‘作为结束符。例如”C program“共有9个字符。字符串是存放在一维数组中的,在数组中它占10个字节,最后一个’\0‘是由系统自动加上的。
有了结束标志’\0‘后,字符数组的长度就显得不那么重要了。在程序中往往依靠’\0‘的位置来判定字符串是否结束,而不是根据数组的长度来决定字符串长度,当然,在定义字符数组时应估计实际字符串长度,保证数组长度始终大于字符串实际长度。如果在一个字符数组中先后存放多个不同长度的字符串,则应使数组长度大于最长的字符串长度。
说明: ’\0‘代表ASCII码为0的字符,从ASCII码表中可以查到,ASCII码为0的字符不是一个可以显示的字符,而是一个”空操作符“,即它什么也不做。用它来做字符串标志不会产生附加的操作和增加有效字符,只起一个供辨别的标志。