1、在C语言中,是将字符串作为字符数组来处理的。例1就是用一个一 维的字符数 来存放字符串I am a student. ”的,字符串中的字符是逐个存放到数组元素中的。在该例中,字符串的实际长度与数组长度相等。
2、在实际工作中,人们关心的往往是字符串的有效长度而不是字符数组的长度。例如 文一个字符数组长度为100,而实际有效字符只有40个。为了测定字符串的实际长。语言规定了个“字符串结束标志”。 以字符’\0’作为结束标志。如果字符数干字符前面9个字符都不是空字符()0’),而第10个字符是\0,则认为数组中有一个符串,其有效字符为9个。也就是说,在遇到字符’\0’时,表示字符串结束,把它前组成一个字符串。
注意:C系统在用字符数组存储字符串常量时会自动加一个\0作为结束说明:C program”共有9个字符,字符串是存放在一维教组中的,在数组中它占10个节一个字节’\0’是由系统自动加上的。
有了结束标志\0后,字符数组的长度就显得不那么重要了。在程序中往往依靠检测‘\0’的位置来判定字符申是否结束,而不是根据数组的长度来决定字符串长度,是否此,为 在定义字符数组时应估计实际字符串长度,保证数组长度始终大于字符串实际长度,符数果在一个字符数组中先后存放多个不同长度的字符串,则应使数组长度大于最长的字符串长度;
例1:

#include<stdio.h>
 int main()
 {
 char[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;
 }

说明

字符数组并不要求它的最后一个字符为’\0,甚至可以不包含0’。像以下这

精格依祥写完全是合法的,

如:charc[5]={‘C’,‘h’,‘i’,‘n’,‘a’);

是否需要加’0’,完全根据需要决定。由于系统在处理字符串常量存储时会自动加一个\0’,因此,为了使处理方法一致,便于测定字符串的实际长度,以及在程序中作相应的处 理,在字符数组中也常常人为地加上一个’\0’。

例如:

charc[6]={‘C’,‘h’n’,‘a’,’\0’}

这样做,便于引用字符数组中的字符串。

如定义了以下的字符数组:

char[ ]={“C program.”}

由于系统自动在字符串常量的最后一个字符后面加了一个0’,因此c数组的存储情况如下:

字符串的结束标志python 字符串的结束标准_字符串


若想用一个新的字符串代替原有的字符串"C program.",如从键盘输人Hello’分别赋 给c数组中前面5个元素。如果不加\0’的话,字符数组中的字符如下:

字符串的结束标志python 字符串的结束标准_字符串_02


新宇符串和老字符串连成-片.无法区分开。 如果想输出字符数组中的字符串 ,则会连续输出:

Hellogram.

如果在"Hello"后面加一个‘0’ ,它取代了第6个字符’g’.在数组中的存储情况为

字符串的结束标志python 字符串的结束标准_数组_03


‘\0’是字符申结束标志,如果用以下语句输出数组C中的字符串:

printf("%s\n" ,c); //输出数组c中的字符串

在输出字符数组中的字符串时,遇’\0’就停止输出,因此只输出了字符H"Hell".而不会输 出“Hllogram."