好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

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

42页
  • 卖家[上传人]:静***
  • 文档编号:256171135
  • 上传时间:2022-02-19
  • 文档格式:PPT
  • 文档大小:2.29MB
  • / 42 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 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编码是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程序设计语言中,字符串常量使用数组保存区别字符字符串形式用单引号括起来用双引号括起来数量1个字符大于等于一个字符n字符串在内存中的存储方式是,按顺序存储每个字符的ASCII编码值,如下图所示每个字符串的末尾都附有一个特殊字符0,称为字符串结束标志C语言中没有字符串变量,因此要保存字符串常量的话需要借助字符数组.6.3 字符数组P154字符数组使用char关键字进行定义,一般形式如下:char 数组名数组长度;例如: 定义字符数组c,并将字符逐一保存到字符数组中.char c20=I, ,a,m, ,h,a,p ,p ,y,0; C0C1C2C3C4C5C6C7C8C9C10C11I am ha p py 00注意:余下的数组元素用空字符0填充字符串和字符串结束标志0可以直接使用字符串常量来赋值字符数组,例如:char c20=“I am happy”;或简写成char c20=“I am happy”;和上一个例子相同,字符串中的字符是逐个存放到数组元素中的唯一的区别是,C系统在用字符数组存储字符串常量时会自动在末尾加一个0作为字符串结束标志。

      所以上面的程序实际上是存储了11个字符数据到数组c中C0C1C2C3C4C5C6C7C8C9C10C11I am ha p py 0字符数组的输出方法P159(一)逐个字符输出使用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输出的字符不包括结束符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字符串处理函数puts()函数 作用:是将一个字符串(以0结束的字符序列)输出到屏幕使用方式为: puts (字符数组名);例如:char str=“chinanBeijing”; puts(str);gets()函数作用:作用是从终端输入一个字符串到字符数组使用方式为:gets(字符数组名);例如:char str200; gets(str);二维字符数组n若需要存放多个字符串,则可以使用二维字符数组定义二维字符数组的语法格式char 数组名整型常量整型常量;例如:char arr310; 例题6.15 二维字符数组单个元素引用#include void 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“,strlen(str);输出结果不是10,也不是6,而是5strlwr函数和strupr函数 lstrlwr函数的作用是将字符串中大写字母换成小写字母其一般形式为: strlwr (字符串) lstrupr函数的作用是将字符串中小写字母换成大写字母其一般形式为:strupr (字符串)6.3.3 指向字符串的指针变量n可以定义一个指向字符的指针变量来指向存放字符串的首地址,这种指针变量就称为指向字符串的指针变量例如: char *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 stdio.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当遇到存储字符串结束符的数组元素时,则循环停止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编写程序代码统计用户从键盘上输入一行字符中,字母,数字,空格和其他字符的个数。

      例如: 键盘输入 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);例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-; while(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);。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.