《c语言基础字符串.pptx》由会员分享,可在线阅读,更多相关《c语言基础字符串.pptx(22页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、回顾 2-2采用传值调用方式时,在被调用函数中改变形参的值,只是改变其副本值,而不会影响调用函数中实参值采用传址调用方式时,传递的是变量的地址值,这样在被调函数中,对形参的操作实际上操作的是实参本身数组作为函数传递时,实际采用传址方式第1页/共22页目标理解字符串常量理解字符数组和字符串的异同使用字符串输入/输出函数使用字符串处理函数理解指针与字符串的关系使用字符指针数组使用字符串作为函数参数第2页/共22页本章结构字符数组和字符串字 符 串字符串作函数参数字符串处理函数字符串的输入输出函数指针和字符串字符指针数组第3页/共22页字符串简介char a=W;char b=a;char c=n;
2、char d=g;char e=L;char f=i;如何让程序存储我的姓名?Wang Lichar name15=W,a,n,g,L,i;用若干个字符用字符数组用字符串第4页/共22页字符串常量字符串常量是双引号括起的任意字符序列Hello WorldWangPingPlease enter your full name:Hello Accp字符串常量中可以包含转义序列HelloWorld0字符串结束符第5页/共22页字符串与字符数组在语言中没有专门的字符串变量,通常用一个字符数组来存放一个字符串字符数组和字符串的区别是:字符串的末尾有一个空字符 0字符串可按如下方式声明并初始化:char
3、name15=W,a,n,g,L,i,0;char name15=WangLi;char password=12345678;手工加入一个空字符系统将自动加入一个空字符省略数组大小,系统自动计算,大小为后面的字符总数加1,最后一个元素存入一个空字符。第6页/共22页字符串I/0函数3-1char name10;scanf(%s,name);printf(%s,name);格式描述串中使用转换字符串“%s”Wang LiWang0使用 scanf 时,不能输入空格Wang第7页/共22页字符串I/0函数3-2char name10;gets(name);puts(name);WangLi0Wan
4、g LiWang Li从键盘上读入一个完整的行,存入字符数组name。并用空字符0取代行尾的换行符n。把字符数组中的字符串输出到显示器。使用 gets函数允许输入空格第8页/共22页字符串I/0函数3-3puts 函数完全可以由 printf 函数取代。当需要按一定格式输出时,通常使用 printf 函数。printf(n 雇员姓名是:);puts(name);printf(n 雇员所属部门是:);puts(dept);printf(n 雇员姓名是:%s,name);printf(n 雇员所属部门是:%sn,dept);使用puts函数输出字符串使用printf函数输出字符串第9页/共22页字
5、符串示例#include void main()char line30;int i,count=0;printf(n 请输入一行字符:n);gets(line);i=0;while(linei!=0)if(linei=)count+;i+;printf(“n 其中的空格总数为%d n,count);C is a programming language在循环执行时,扫描整个数组以统计出空格 的数量,直到遇到字符 0。每次循环执行时,都会更新计数器 i 和 count。其中的空格总数为 4第10页/共22页字符串处理函数 5-1q与字符串有关的内置函数在头文件string.h中定义q要使用标准库
6、字符串处理函数,程序前应该包含:#include string.hstrlenstrcpystrcmpstrcat第11页/共22页字符串处理函数 5-2语法 strlen(s);描述计算字符串s中字符的个数,并将字符的个数作为函数的返回值。在计算字符个数时不计表示字符串结束的空字符0。strlen#include#include void main()char arr=Beijing;int len1,len2;len1=strlen(arr);len2=strlen(Shanghai);printf(n string=%s length=%d,arr,len1);printf(n stri
7、ng=%s length=%d n,Shanghai,len2);string=Beijing length=7 string=Shanghai length=8第12页/共22页字符串处理函数 5-3语法 strcpy(dest,src)描述其中,dest是目标字符串,src是源字符串。相当于把字符数组src中的字符串拷贝到字符数组dest中。结束标志0也一同拷贝。src可以是一个字符串常量。字符数组dest应足够大,以保证字符串复制不越界。strcpy#include#include void main()char source=We change lives;char target20;
8、strcpy(target,source);printf(n 源字符串=%s,source);printf(n 目标字符串=%sn,target);源字符串=We change lives 目标字符串=We change lives第13页/共22页字符串处理函数 5-4语法strcmp(str1,str2)描述按照ASCII码顺序比较字符串str1和str2的大小,比较的结果由函数返回。在两个字符串str1和str2相同时返回0;字符串str1大于字符串str2时返回一个正值,否则就返回负值。strcmp#include#include void main()char username15,
9、pwd15;printf(n 请输入用户名:);gets(username);printf(n 请输入密码:);gets(pwd);if(strcmp(username,John)=0)&(strcmp(pwd,123456)=0)printf(n 您已成功登录 n);elseprintf(n 用户名和/或密码无效 n);请输入用户名:john 请输入密码:123456 用户名和/或密码无效 请输入用户名:John 请输入密码:123456 您已成功登录第14页/共22页字符串处理函数 5-5语法 strcat(dest,src)描述把字符串 src中的字符串连接到字符串 dest中字符串的后
10、面。本函数返回值是字符数组dest的首地址。连接后字符串的总长度将是字符串 src 的长度加上字符串 dest的长度。目标字符串dest的大小应足够存储最终的字符串。strcat#include#includevoid main()char source_string=is very good;char target_string30=ACCP 4.0;strcat(target_string,source_string);printf(n 源字符串=%s,source_string);printf(n 目标字符串=%sn,target_string);源字符串=is very good 目标
11、字符串=ACCP 4.0 is very good第15页/共22页指向字符串的指针在C语言中,可以将字符指针指向字符串被指向的字符串可以是一个常量字符串,也可以是一个存储着字符串的字符数组char*ptr=C Language;CLanguage0ptrchar*ps=We change lives;int n=10;ps=ps+n;printf(%sn,ps);Wechanglives0ps lives第16页/共22页指向字符串的指针char uname30=wahaha yiyiyaya;char*p;int count;count=0;for(p=uname;*p!=0;p+)if(
12、*p=a)count+;Wahahayiyiyaya0psunamecount0 5循环第17页/共22页字符指针数组字符指针数组:一个数组中的各个元素都是字符指针char*names =Apple,Pear,Peach,Banana;Apple0Pear0Banana0Peach0EE05EE20EE44EE87names各字符串的首地址第18页/共22页字符指针数组示例void main()char*names=Apple,Banana,Pineapple,Peach,Strawberry,Grapes;char*temp;printf(“n%s%s,names2,names3);temp
13、=names2;names2=names3;names3=temp;printf(n%s%s,names2,names3);printf(n);Apple0Banana0Peach0Pineapple0namesStrawberry0Grapes0temp Pineapple Peach Peach Pineapple55485562558355A855B355C9558355A85583第19页/共22页字符串作为函数参数void mystrcpy(char dest,char src)int i=0;while(srci!=0)desti=srci;i+;desti=0;用户定义版字符串拷
14、贝函数int mystrlen(char*s)int n=0;while(*s!=0)+s;+n;return n;用户定义版求字符串长度函数第20页/共22页总结字符串与字符数组的区别是字符串的末尾有一个空字符0以标识字符串结束用scanf()语句读入字符串时不允许输入中存在空格gets()和 puts()函数分别用于字符串的输入和输出在 string.h 中定义了很多字符串处理函数函数,比较常用的有:strcpy()、strcat()、strcmp()和 strlen()假如程序里需要一组字符串,一种常用的做法就是用一个字符指针数组表示它们字符串可以作为参数,函数传递机制同数组作为参数,为引用方式第21页/共22页感谢您的欣赏!第22页/共22页