字符串
称最后有字符率结束符'\0'的字符序列为字符串。字符数组中存储的字符序列本身并不要求最后一定要有字符'\0'.但当字符数组内存储的内容需要作为字符串时,就必须要有标记符'\'.当字符数组内存储的是字符串时,可用“%s”格式输出,若是普通的字符序列,则它不能用格式“%s”输出,而只能结合循环用格式“%c”输出。
指定元素个数的字符数组用字符串常量给它初始化时,其元素个数不能小于字符串常量的字符数,但数组的元素个数可以等于字符串常量的字符数。例如,
char ss[3]=“abc”;
则, ss[0]='a',ss[l]='b', ss[2]='c'.此时,字符数组ss中存储的是字符序列,不是字符串。
字符率结束标记符的代码是8位全0,称为空字符,程序用'\0'来标记。字符串的结束标记符紧接在字符串的有效字符列之后。例如,一个有8个有效字符的字符串,其长度为8个字符,但在它的第九个位置存有结束标记符'\0'.
请读者注意以下几点:
(l)字符率与存储字符串的字符数组有区别。字符率的有效字符是指从所指位置的第一个字符开始至字符串结束标记符之前的那些字符。格式符“%s”只输出字符串的有效字符,而不会再继续输出字符率结束标记符及其之后的字符。例如,
char str[50]=“Pas\0cal Cobol Fortran C”;
printf(“%s\n”,str) ;
将只输出:Pas。而实际上,数组str[]字符率结束符之后还存有其它许多字符。
(2)用“%s”格式输出字符串时,不包括字符串结束标记符。对应的输出项是字符串或字符串名。字符数组名可作为字符串名。对于上例,写成
printf(“%s”,s[0]);
是错误的。因s[0]是数组s的元素,是一个字符,不是字符串。
(3)在调用scanf()为字符数组输入字符串时,输入项是数组名,不要加地址运算符&.
(4)若用“%c”格式结合循环输入字符序列,若程序又想将输入的字符序列构成字符串,则程序必须用赋值语句在字符列之后存入字符串结束标记符,使其变成字符串。
程序经常要处理许许多多的字符串,如存储星期的名称。同时存储众多字符串的一个实现方法是定义一个二维字符数组,让二维数组的每一行存储一个字符串。这样做,要求数组每行元素个数应比可能最长的字符串字符个数还要多1个。如下面的示例所示:
char weekDay[][9]= {“Sunday”,“Monday”,“Tuesday”,“Wednesday”,
“Thursday”,“ Friday” ,“Saturday”};
在C程序中,存储多个字符串更好的方法是用指针数组。
计算机软考网络管理员考试题及答案汇总(21套)
[网络管理员]2017年2月8日计算机软件水平考试网络工程师试卷及答案汇总(17套)
[网络工程师]2017年1月31日2016年下半年软件水平考试成绩查询入口已开通
[考试动态]2017年1月3日2016年上半年全国计算机软件水平考试证书领取时间
[考试动态]2016年12月15日人力资源社会保障部2017年计算机技术与软件考试计划及有关问题通知
[考试动态]2016年12月2日