C语言程序设计字符串和字符串指针变量(2版)

上传人:Za****n* 文档编号:159918315 上传时间:2022-10-09 格式:PPT 页数:44 大小:2.29MB
收藏 版权申诉 举报 下载
C语言程序设计字符串和字符串指针变量(2版)_第1页
第1页 / 共44页
C语言程序设计字符串和字符串指针变量(2版)_第2页
第2页 / 共44页
C语言程序设计字符串和字符串指针变量(2版)_第3页
第3页 / 共44页
资源描述:

《C语言程序设计字符串和字符串指针变量(2版)》由会员分享,可在线阅读,更多相关《C语言程序设计字符串和字符串指针变量(2版)(44页珍藏版)》请在装配图网上搜索。

1、1.字符型数据字符型数据nC程序设计语言采用了ASCII标准字符集来提供对字符数据的支持。ASCII字符集提供了127个字符的编码。组成如下:1.字母:大写英文字母AZ,小写字母az2.数字:093.专门符号:29个,包括:!“等等4.空格符:空格、水平制表符(tab)、垂直制表符号等等5.转义字符:n(回车换行)b(退格)等等ASCII编码编码(书本附录书本附录P377)在计算内部实际上是将字符以整数形式存放在内存单元中的。这个整数实际上就是字符的ASCII编码例如:大写字母A的ASCII编码是65,Z的编码是90小写字母a的ASCII编码是97,z的编码是122数字字符0的ASCII编码是

2、49,9的编码是57空格字符 的ASCII编码是32注意:(1)C语言中字符常量是由1个字符构成的数据.(2)在程序中,字符常量必须用单引起括起来,所以1和1是两个完全不同的对象。前者是字符,后者是一个数字.字符变量字符变量字符变量是用类型符char定义的变量。一个字符变量只能存储一个ASCII字符。例如:char c;正确的代码:c=?;错误的代码:c=?!;c=“abc”;2.字符串常量字符串常量由多个字符组成的数据称为字符串常量(以后简称字符串),字符串常量的两边必须用双引号包含起来。例如:“this is a string.”或 “china”在C程序设计语言中,字符串常量使用数组保存

3、。区别字符字符串形式用单引号括起来用双引号括起来数量1个字符大于等于一个字符n字符串在内存中的存储方式是,按顺序存储每个字符的ASCII编码值,如下图所示。每个字符串的末尾都附有一个特殊字符0,称为字符串结束标志。C C语言中没有字符串变量语言中没有字符串变量,因此要保存字因此要保存字符串常量的话需要借助字符数组符串常量的话需要借助字符数组.6.3 字符数组字符数组P154字符数组使用char关键字进行定义,一般形式如下:char 数组名数组长度;例如:定义字符数组c,并将字符逐一保存到字符数组中.char c20=I,a,m,h,a,p,p,y,0;C0C1C2C3C4C5C6C7C8C9

4、C10C11I am ha p py 00注意:余下的数组元素用空字符0填充字符串和字符串结束标志字符串和字符串结束标志0可以直接使用字符串常量来赋值字符数组,例如:char c20=“I am happy”;或简写成char c20=“I am happy”;和上一个例子相同,字符串中的字符是逐个存放到数组元素中的。唯一的区别是,C系统在用字符数组存储字符串常量时会自动在末尾加一个0作为字符串结束标志。所以上面的程序实际上是存储了11个字符数据到数组c中。C0C1C2C3C4C5C6C7C8C9 C10C11I am ha p py 0字符数组的输出方法字符数组的输出方法P159(一)逐个字

5、符输出使用printf语句和%c格式符#include main()char c15=I,a,m,a,s,t,u,d,e,n,t,.;char d11=“I am happy”;int i;for(i=0;i15;i+)printf(%c,ci);printf(n);for(i=0;i10;i+)printf(%c,di);(二)将整个字符串一次输出,使用printf和%s格式符例C6-6-2.C#include main()char c11=I am happy;printf(%s,c);getch();用%s格式符输出字符串时,printf函数中的输出项是字符数组名说明说明:n输出的字符不

6、包括结束符0n如果数组长度大于字符串实际长度,输出到0结束例如:char c10=“China”;只输出有效的字符5个n如果字符数组中包含一个以上0,则遇第一个0时输出就结束。例如char c=“hello Bob”;c5=0;printf(“%s”,c);/*屏幕上输出hello */c0c1c2c3c4c5c6c7c8c9hello空格 Bob0字符数组的输入字符数组的输入可以用scanf函数输入一个字符串。例如:char c20;scanf(”%s”,c);注意:scanf函数中的输入项c是已定义的字符数组名,数组名前面不要加&,因为C语言中数组名代表该数组的地址。6.3.6字符串处理函

7、数字符串处理函数puts()函数 作用:是将一个字符串(以0结束的字符序列)输出到屏幕。使用方式为:puts(字符数组名);例如:char str=“chinanBeijing”;puts(str);gets()函数作用:作用是从终端输入一个字符串到字符数组。使用方式为:gets(字符数组名);例如:char str200;gets(str);二维字符数组二维字符数组n若需要存放多个字符串,则可以使用二维字符数组定义二维字符数组的语法格式char 数组名整型常量整型常量;例如:char arr310;例题例题6.15 二维字符数组单个元素引用二维字符数组单个元素引用#include void

8、main()char week710=Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday;int i,j;for(i=0;i7;i+)for(j=0;j字符串字符串2,函数值为一正整数。,函数值为一正整数。l如果字符串如果字符串1str2strlen函数函数lstrlen是测试字符串长度的函数。函数的值为字符串中的是测试字符串长度的函数。函数的值为字符串中的实际长度实际长度(不包括不包括0)。其一般形式为:。其一般形式为:strlen(字符数组字符数组)例如:例如:char str10=“China”;printf(“%d“,str

9、len(str);输出结果不是输出结果不是10,也不是,也不是6,而是,而是5。strlwr函数和函数和strupr函数函数 lstrlwr函数的作用是将字符串中大写字母换成小写字母。函数的作用是将字符串中大写字母换成小写字母。其一般形式为:其一般形式为:strlwr(字符串字符串)lstrupr函数的作用是将字符串中小写字母换成大写字母。函数的作用是将字符串中小写字母换成大写字母。其一般形式为:其一般形式为:strupr(字符串字符串)6.3.3 指向字符串的指针变量指向字符串的指针变量n可以定义一个指向字符的指针变量来指向存放字符串的首地址,这种指针变量就称为指向字符串的指针变量。例如:c

10、har*ptr=“This is a string”;说明:系统分配一块长度为字符串字符个数加上1的连续内存空间用于存放该字符串,然后将连续内存空间的首地址赋给字符指针ptr.例例6.17#include stdio.hvoid main()char*string;string=This is a string.;printf(%sn,string);string+=8;while(*string)putchar(string0);string+;Thisisastring.0内存指向字符数组的指针变量指向字符数组的指针变量可以定义一个字符指针指向一字符数组。例6.18#include std

11、io.hmain()char str=This is a string.;char*string;string=str;printf(%sn,str);printf(%sn,string);string+=8;printf(%sn,string);getch();字符串应用举例字符串应用举例例题例题1:n统计用户从键盘上输入字符串中字符的个数。#include void main()char c100;int i,sum=0;gets(c);for(i=0;ci!=0;i+)sum+;printf(the input font number=%d,sum);循环终止条件ci!=0当遇到存储字符

12、串结束符的数组元素时,则循环停止。tjzf1.c方法1:使用gets函数完整读取输入的内容后,再使用循环逐个统计又字符的数组元素个数,直到遇到字符串结束符0为止方法2:使用getchar函数逐个读取键盘上输入的字符并保存到数组中,直到遇到回车符n时停止tjzf2.c#include void main()char c100;int i,sum=0;for(i=0;(ci=getchar()!=n)&i100;i+)sum+;printf(the input font number=%d,sum);getch();例题例题2:n编写程序代码统计用户从键盘上输入一行字符中,字母,数字,空格和其他字

13、符的个数。例如:键盘输入 Monday.则显示字母有9个,数字2个,空格4个,其他字符1个#include void main()char c100;int i,zm=0,sz=0,kg=0,qt=0;gets(c);.#include void main()char c100;int i,zm=0,sz=0,kg=0,qt=0;gets(c);for(i=0;ci!=0;i+)if(A=ci&ci=Z)zm+;else if(a=ci&ci=z)zm+;else if(0=ci&ci=A)&(*str1=a)&(*str2=z)*str2-=32;str2+;puts(s1);puts(s2

14、);例例6.25n删除一个字符串中所有的空格字符#include stdio.hmain()char s80,*p1,*p2;gets(s);p1=p2=s;while(*p1)if(*p1=)p1+;else *p2+=*p1+;*p2=0;printf(%sn,s);s10s11s12s13s14s15s179A空格 C空格E0例例6.27 将一个字符串反向将一个字符串反向#include stdio.hmain()char str50,*p1,*p2,temp;printf(Enter string:);gets(str);p1=p2=str;while(*p1)p1+;p1-;whil

15、e(p2p1)temp=*p2;*p2+=*p1;*p1-=temp;puts(str);s10s11s12s13s14s15s149AB CDE0例例6.28 将多个字符串按从小到大排序将多个字符串按从小到大排序#include stdio.h#include string.hmain()char s68=FORTRAN,PASCAL,BASIC,COBOL,C,C+,temp8;int i,j,k;for(i=0;i5;i+)k=i;for(j=i+1;j0)k=j;if(k!=i)strcpy(temp,sk);strcpy(sk,si);strcpy(si,temp);for(i=0;i6;i+)puts(si);

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!