6.3.2 字符串的概念
字符数组的功能不只是前面所讲述的那样,实际上,字符数组有更强大的功能与应用范围,这就是字符串。所谓字符串,就是由若干字符构成的有限的有序集合。字符串可以包括字母、数字、专用字符、转义字符等。C语言没有专门的字符串变量,通常用一个字符数组来表示一个字符串。C语言规定:以'\0'作为字符串的结束标志(“\0”代表ASCII码为0的字符,表示一个“空操作”,只起了一个标志作用)。字符串可以整体处理,不必像数组元素那样单个进行处理。
1.用字符串定义及初始化字符数组
该字符串在内存中的存放形式如图6-2所示。
图6-2
字符串还可以定义成如下形式:
注意:
①字符串在内存中存放时,系统将自动在字符串的末尾添加一个字符串的结束标记'\0',系统碰到第一个'\0'就认为字符串处理结束。
②由于结束标志在字符数组中占用一个元素的存储空间,因此在说明字符数组长度时,其最小长度为实际字符串所需长度加1。例如:数组str的长度为8,不是7(如图6-2所示)。
③如果是部分元素初始化,则其余的部分补'\0'。
例如:
数组c的前5个元素为“C”,“h”,“i”,“n”,“a”,第6个元素为“\0”,后4个元素为空字符,如图6-3所示。
图6-3
2.字符串的输入和输出
除了可以通过初始化使字符串得到初值外,也可以使用scanf()函数输入字符串。同样,也可以用printf()函数整体输出存放在字符数组中的字符串。
例6.11
程序如下:
程序运行结果如下:
注意:
①输出的字符串不包括结束符“\0”。
②用“%s”格式符用来控制字符串的输入输出。在printf()函数中的输出项是字符串名或字符数组名,而不是数组元素名。下面的写法是错误的:
printf("%s",a[0]);
③若数组长度大于字符串实际长度,也只输出遇到'\0'时结束。如果一个字符数组包含一个以上'\0',则输出到第一个'\0'时就输出结束。
例如:若输入的数据是:string↙,系统会自动在后面加一个'\0'结束符。该字符串在内存里的存放形式如图6-4所示。
图6-4
程序运行后在屏幕上显示的是:string。
④用scanf()函数输入字符串时,如果使用%s格式符,其输入项是字符串名或字符数组名,此时不需要再加地址符&。输入数据时,以回车作为结束,系统会自动在串尾添加'\0'作为结束标志。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。