第0讲12_5PE实例_第1页
第0讲12_5PE实例_第2页
第0讲12_5PE实例_第3页
第0讲12_5PE实例_第4页
第0讲12_5PE实例_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第1 讲 字符串河南理工大学 计算机科学与技术学院2012暑期暑期培训培训Cmain() char a=h,e,l,0,l,o,0; printf(%s,a);例输出:hel h e l 0 l o 0数组中有多个0时,遇第一个结束输出结果?输出结果?例 字符串输入举例 H o w 0 a r e 0 y o u ? 0 #include main() char a15,b5,c5; scanf(%s%s%s,a,b,c); printf(a=%snb=%snc=%sn,a,b,c); scanf(%s,a); printf(a=%sn,a);运行情况:输入:How are you?输出:a=

2、How b=are c=you?输入:How are you?输出:a=Howscanf中%s输入时,遇空格或回车结束运行情况:输入:How are you?例 若准备将字符串“This is a string.”记录下来,错误的输入语句为:(A)scanf(“%20s”,s);(B)for(k=0;k17;k+) sk=getchar();(C)while(c=getchar()!=n) sk+=c;字符数组v定义 v字符数组的初始化l逐个字符赋值l用字符串常量v字符数组的引用例 char c10, ch34; 例 char ch5=H,e,l,l,o;ch0Hello逐个字符赋值ch1ch

3、2ch3ch4有问题! 例 char ch5=H,e,l,l,o;ch0Hello逐个字符赋值ch1ch2ch3ch4 例 char ch5=B,o,y;ch0Boy00逐个字符赋值ch1ch2ch3ch4 例 char ch5=“Boy”;ch0Boy00用字符串常量ch1ch2ch3ch4 例 char ch6=“Hello”; char ch6=“Hello”; char ch=“Hello”;用字符串常量ch0Helloch1ch2ch3ch40ch5 例 char diamond5=., .,*,.,*,.,*, *, ., ., . ,*,.,*, .,*,., .,*;二维字符数

4、组初始化.*00.*.*0*.*.*.*0.*00diamond0diamond1diamond2diamond3diamond4 例 char fruit7=“Apple”,”Orange”, ”Grape”,”Pear”,”Peach”;二维字符数组初始化fruit0fruit1fruit2fruit3fruit4Apple00Orange0Grape00Pear000Peach00例 输出一个字符串#include main() char c10=I, ,a,m, ,a, ,b,o,y; int i; for(i=0;i10;i+) printf(%c,ci); printf(n);Ia

5、maboy0123456789字符串v字符串及其结束标志l无字符串变量,用字符数组处理字符串l字符串结束标志:0例 “hello”共5个字符,在内存占6个字节 字符串长度5 h e l l o 0104 101 108 108 111 0内存存放字符ASCII码v字符串的输入输出l逐个字符输入输出: %cl整个字符串输入输出: %s例 用%c main() char str5; int i; for(i=0;i5;i+) scanf(“%c”, &stri); for(i=0;i5;i+) printf(“%c”, stri);例 用%s main() char str5; scanf(“%s

6、”, str); printf(“%s”, str);用字符数组名,不要加&输入串长度数组维数遇空格或回车结束自动加0用字符数组名,遇0结束例 main( ) char a5=H,e,l,l,o; printf(“%s”,a); 例 main( ) char a =“Hello”; printf(“%s”,a); 结果:Hello#-=* h e l l o02314结果:Hello用“%s”输出时,遇0结束main() int i; char a5; scanf(%s,a); for(i=0;i5;i+) printf(%d,ai);运行情况:(1)若输入 hel , 正常(2)若输入 he

7、ll , 正常(3)若输入 hello , 用%s 输出时,会出现问题 h e l 0 h e l l 0 h e l l o输入字符串长度数组维数例 字符串输入举例 H o w 0 a r e 0 y o u ? 0 #include main() char a15,b5,c5; scanf(%s%s%s,a,b,c); printf(a=%snb=%snc=%sn,a,b,c); scanf(%s,a); printf(a=%sn,a);运行情况:输入:How are you?输出:a=How b=are c=you?输入:How are you?输出:a=Howscanf中%s输入时,遇

8、空格或回车结束运行情况:输入:How are you? 指针与字符串字符串表示形式v用字符数组实现例 main( ) char string=“I love China!”; printf(“%sn”,string); printf(“%sn”,string+7); IloveChistring0string1string2string3string4string5string6string7string8string9stringstring10string11string12string13n!a0v用字符指针实现例 main( ) char *string=“I love China!”

9、; printf(“%sn”,string); string+=7; while(*string) putchar(string0); string+; IloveChistringn!a0字符指针初始化:把字符串首地址赋给string char *string; string=“I love China!”;string*string!=0字符串指针作函数参数例 用函数调用实现字符串复制(1)用字符数组作参数(2)用字符指针变量作参数aIamateaceh0r.fromabyuarasutndetoboet.0Iaaeceh0r.t.0mtavoid copy_string(char fro

10、m,char to) int i=0; while(fromi!=0) toi=fromi;i+; toi=0;main() char a=I am a teacher.; char b=You are a student.; printf(string_a=%sn string_b=%sn,a,b); copy_string(a,b); printf(nstring_a=%snstring_b=%sn,a,b);void copy_string(char *from,char *to) for(;*from!=0;from+,to+) *to=*from; *to=0;main() char

11、 *a=I am a teacher.; char *b=You are a student.; printf(string_a=%snstring_b=%sn,a,b); copy_string(a,b); printf(nstring_a=%snstring_b=%sn,a,b);字符指针变量与字符数组char *cp; 与 char str20;vstr由若干元素组成,每个元素放一个字符;而cp中存放字符串首地址v char str20; str=“I love China!”; () char *cp; cp=“I love China!”; ()vstr是地址常量;cp是地址变量vc

12、p接受键入字符串时,必须先开辟存储空间例 char str10; scanf(“%s”,str); ()而 char *cp; scanf(“%s”, cp); ()改为: char *cp,str10; cp=str; scanf(“%s”,cp); ()字符串与数组关系l字符串用一维字符数组存放l字符数组具有一维数组的所有特点u数组名是指向数组首地址的地址常量u数组元素的引用方法可用指针法和下标法u数组名作函数参数是地址传递等l区别u存储格式:字符串结束标志u赋值方式与初始化u输入输出方式:%s %cchar str=“Hello!”; ()char str=“Hello!”; ()cha

13、r str=H,e,l,l,o,!; ()char *cp=“Hello”; ()int a=1,2,3,4,5; ()int *p=1,2,3,4,5; ()char str10,*cp;int a10,*p;str=“Hello”; ()cp=“Hello!”; ()a=1,2,3,4,5; ()p=1,2,3,4,5; ()v常用的字符串处理函数包含头文件 string.hu字符串输出函数puts格式:puts(字符数组)功能:向显示器输出字符串(输出完,换行)说明:字符数组必须以0结束u字符串输入函数gets格式:gets(字符数组)功能:从键盘输入一以回车结束的字符串放入字符数组中,

14、 并自动加0说明:输入串长度应小于字符数组维数例 #include main( ) char string80; printf(“Input a string:”); gets(string); puts(string); 输入: How are you?输出: How are you ? u字符串连接函数strcat格式:strcat(字符数组1,字符数组2)功能:把字符数组2连到字符数组1后面返值:返回字符数组1的首地址说明:字符数组1必须足够大 连接前,两串均以0结束;连接后,串1的0取消, 新串最后加0u字符串拷贝函数strcpy格式:strcpy(字符数组1,字符串2)功能:将字符串

15、2,拷贝到字符数组1中去返值:返回字符数组1的首地址说明:字符数组1必须足够大 拷贝时0一同拷贝 不能使用赋值语句为一个字符数组赋值例 char str120,str220; str1=“Hello!”; () str2=str1; ()例 strcpy与strcat举例#include #include void main() char destination25; char blank = , c= C+, turbo = Turbo; strcpy(destination, turbo); strcat(destination, blank); strcat(destination, c

16、); printf(%sn, destination);TrboC+0123456789u024.Trbo0123456789u024.Trbo00123456789u24.u字符串比较函数strcmp格式:strcmp(字符串1,字符串2)功能:比较两个字符串比较规则:对两串从左向右逐个字符比较(ASCII码), 直到遇到不同字符或0为止返值:返回int型整数,a. 若字符串1 字符串2, 返回正整数 c. 若字符串1= 字符串2, 返回零说明:字符串比较不能用“=”,必须用strcmpu字符串长度函数strlen格式:strlen(字符数组)功能:计算字符串长度返值:返回字符串实际长度,不

17、包括0在内例 对于以下字符串,strlen(s)的值为:(1)char s10=A,0,B,C,0,D;(2)char s =“tv0willn”;(3)char s =“x69082n”; 答案:1 3 1#include #include main() char str1 = ”Hello!, str2 = ”How are you?”,str20; int len1,len2,len3; len1=strlen(str1); len2=strlen(str2); if(strcmp(str1, str2)0) strcpy(str,str1); strcat(str,str2); els

18、e if (strcmp(str1, str2)0) strcpy(str,str2); strcat(str,str1); else strcpy(str,str1); len3=strlen(str); puts(str); printf(”Len1=%d,Len2=%d,Len3=%dn”,len1,len2,len3);例 strcmp与strlen举例How are you?Hello!Len1=6,Len2=12,Len3=18应用举例例 输入一行字符,统计其中有多少个单词输入一字符串给 string i=0 num=0 word=0当(c=stringi)!=0)c=空格真真假假word=0word=1num=num+1i=i+1输出:numword=0#include main() char string81; int i,num=0,word=0; cha

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论