字符串与字符数组都是描述由多个字符构成的数据,字符串借用字符数组来完成处理。但请注意:
(1)表示字符串数据用双引号表示,而字符数据用单引号。
(2)字符串的长度可以根据串中字符个数临时确定,而字符数组的长度必须事先规定。
(3)对字符串,系统在串尾加‘\O’作为字符串的结束标志,而字符数组并不要求最后一个字符为‘\O’。
(4)用字符数组来处理字符串时,字符数组的长度应比要处理的字符串长度大1,以存放串尾结束符‘\O’。
例如:
static char city[9]= ‘c’,‘h’,‘a’,‘n’,‘g’,‘s’,‘h’,‘a’,‘\0\')。可用字符串描述为:static char city[9]={\"changsha\")或\"changsha\";
上述两条语句可分别理解为用字符数组来处理字符串,用字符串对字符数组初始化。但千万请注意不能在程序中给字符数组赋值。中国自学编程网整理发布例如:
city一\"changsha\";/*绝对错误*/
下面介绍用字符数组来处理字符串的一些整体操作。
1.输入输出
输入输出用scan{()、printf()函数完成,采用“%s”格式。输入输出参数用字符数组名。
例如,有如下程序:
main()
{char comp[:9];scan{(“%s”,comp);/*本身就是地址,不需加地址运算符*/print{COMP=%s“,comp);}
输入数据:CHINAONE
运行结果:COMP—CHINAONE
说明:
(1)输入字符串数据时不需用界定符。
(2)输入多个字符串数据时,以空格分隔数据。如果字符串数据本身包含有空格字符,需采用特殊处理。
(3)输出先找到存放字符串的字符数组的首地址,遇串尾结束符‘\0’结束。输出字符不包括串尾结束符‘\O’。
(5)如果字符数组长度大于字符串实际长度,也只输出到‘\O’结束。
2.字符串处理函数
puts()与gets()函数包含在头文件stdio.h中,字符串处理函数包含在头文件string.h中,用#include,,String.h“指明。
在以下的函数中,参数str、str1、str2为字符数组类型或指向字符的指针类型。
(1)puts(str)
输出指定字符串。参数可以为字符串常量。
(2)gets(str)
从键盘输入字符串至字符数组str中,输入的字符串可以包含空格。函数的返回值是字符数组str的首地址。
(3)strcpy(strl,str2)
将str2的值复制到strl中,实际上完成字符串的赋值操作。要求strl的长度大于str2的长度,第二个参数可以是字符串常量。
(4)strcat(strl,str2)
将str2的值连接到strl中原有值的后面。注意strl必须足够大,以便能容纳两个字符数组中的所有值。连接完成后,两个字符串并成一个字符串,第一个字符串后面的原结束符自动取消。[Page]
(5)strcmp(st订,str2)
比较strl和str2,若两者相同,返回函数值为0;若strl大于str2,返回函数值为一个正整数;若strl小于str2,返回函数值为一个负整数。
字符串比较规则与其它语言相同,将两个字符串中的字符从左至右依次比较,如果全部字符相同,则认为相等;若出现不同字符,则以第一个不同字符比较结果为准。
两个参数可以是字符串常量。
(6)strlen(str)
函数的返回值为字符串的实际长度。
(7)strlwr-(str)
将字符串中大写字母转换成小写字母。
(8)strupr‘(str)
将字符串中小写字母转换成大写字母。
如果字符数组中包含多个‘\O’,输出遇到第一个‘\0’结束。