- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C语言 第10章 字符串
; 本章要点; 主要内容;;对字符数组初始化,最容易理解的方式是逐个字符
赋给数组中各元素。如:
char c[10]={I, ,a,m, ,a, ,b,o,y};;如果初值个数小于数组长度,则只将这些字符赋给数
组中前面那些元素,其余的元素自动定为空字符
(即′\0′)。例如: ;如果提供的初值个数与预定的数组长度相同,在定义
时可以省略数组长度,系统会自动根据初值个数确定
数组长度。例如: ; char diamond[5][5]={{′ ′,′ ′,*′},{′ ′,′*′,′ ′,′*′},{′*′,′ ′,′ ′,′ ′,′*′},{′ ′,′*′,′ ′,′*′},{′ ′,′ ′,′*′}};§ 10.3字符数组的引用;例10.2 输出一个钻石图形 ;§ 10.4字符串和字符串结束标志;可以用字符串常量来使字符数组初始化。
例如 char c[]={″I am happy″};
也可以省略花括弧,直接写成 char c[]=“I am happy″; 它与下面的数组初始化等价
char c[] ={′I′,′ ′,′a′,′m′,′ ′,′h′,′a′,′p′,′p′,′y′,′\0′};需要说明的是:字符数组并不要求它的最后一个字符为′\0′,甚至可以不包含′\0′。
例如:char c[5]={′C′,′h′,′i′,′n′,′a′};这样写完全是合法的。但是由于系统对字符串常量自动加一个′\0′。因此,人们为了使处理方法一致,在字符数组中也常人为地加上一个′\0′。如:char c[6]={′C′,′h′,′i′,′n′,′a′,′\0′};这样做,这样做是为了便于引用字符数组中的字符串。;定义了以下的字符数组∶
char c[]={”Pascal program”};
现在,想用一个新的字符串代替原有的字符串”Pascal program” ,从键盘向字符数组输入∶Hello
如果不加′\0′的话,字符数组中的字符如下∶
Hellol program;例子:
#includestdio.h
void carray(char *,int n);
main()
{
char a[4]={I, ,a,m};
char b[4]={I,\0,a,m};
carray(a,4);
printf(\n);
carray(b,4);
printf(\n);
};§ 10.5字符数组的输入输出 ;char c[]={″China″};
printf(″%s″,c); ;用“%s”格式符输出??符串时,printf函数中的输出项是字符数组名,而不是数组元素名。如:写成下面这样是不对的:printf(″%s″,c[0]);
如果数组长度大于字符串实际长度,也只输出到遇′\0′结束。
输出字符不包括结束符′\0′。
如:char c[10]={″China″}; /* 字符串长度为5,连’\0’共占6个字节 */
printf(″%s″,c);只输出字符串的有效字符“China”,而不是输出10个字符。这就是用字符串结束标志的好处。;例子:
#includestdio.h
main()
{
char a[]={China};
char b[]=China;
char c[]={C,h,i,n,a};//没有字符串结束标志
char c1[]={C,h,i,n,a,\0};//有字符串结束标志
char d[]={C,h,\0,i,\0,n,a};
printf(a=%s\n,a);
printf(b=%s\n,b);
printf(c=%s\n,c);
printf(c1=%s\n,c1);
printf(d=%s\n,d);
};(4)如果一个字符数组中包含一个以上′\0′,则遇第一个′\0′时输出就结束。
可以用scanf函数输入一个字符串。
例如 scanf(″%s″,c);
scanf函数中的输入项c是已定义的字符数组名,输入的字符串应短于已定义的字符数组的长度。例如,定义 char c[6];
从键盘输入:
China↙系统自动在China后面加一个′\0′结束符。 ;如果利用一个scanf函数输入多个字符串,则在输入时以空格分隔。例如:
char strl[5],str2[5],str3[5];
scanf(″%s%s%s″,str1,str2,str3);
输入数据:
How are you?
数组中未被赋值的元素的值自动置′\0′。;若改为 char str[13];
scanf(″%s″,str);
如果输入以下12个字符 How are you?
大家思考一下str[
文档评论(0)