字符型数组及字符串处理.ppt
5.45.5 字符型数组及字符串处理,引例,输入一个以回车结束的字符串(少于10个字符),它可由数字和字母组成。要求将该字符串中数字转换成整数后输出。,#include int main(void)int i,n;char s10;i=0;printf(Enter a string:);/*输入字符串*/while(si=getchar()!=n)i+;si=0;n=0;/*将字符串转换为整数*/for(i=0;si!=0;i+)if(si=0)n=n*10+(si-0);else break;/*非数字字符结束转换*/printf(digit=%dn,n);return 0;,源程序,Enter a string:123digit=123,Enter a string:12a3digit=12,Enter a string:a12digit=0,Enter a string:12a3digit=123,Enter a string:a12digit=12,i si 0 s0=1 s1=2 2 s2=a3 s3=34 s4=0,程序分析,n=0;for(i=0;si!=0;i+)if(si=0)n=n*10+(si-0);,i si si-0 n=n*10+(si-0)0 1 1 0*10+1=1 1 2 2 1*10+2=122 a 3 3 3 12*10+3=123,Enter a string:1#2#3digit=?digit=1,/指针方式访问数组中字符n=0;for(i=0;*(s+i)!=0;i+)if(*(s+i)=0)n=n*10+(*(s+i)-0);,下标,4 0 跳出循环,一维字符数组,字符串存储和运算用一维字符数组实现。一维字符数组的定义、引用、初始化与其他类型的一维数组相同。定义一个含有5个字符型元素的数组tchar t5;数组t初始化 char t5=H,a,p,p,y;char t=H,a,p,p,y;,输出数组 t 的所有元素for(i=0;i5;i+)putchar(ti);,一维字符数组的存储,static char s6=H,a,p,p,y;/对前5位赋值,其余为0。等价于:static char s6=H,a,p,p,y,0;0代表字符0,也就是ASCII码为0的字符。等价于:static char s=H,a,p,p,y,0;,字符串处理,字符串常量用一对双引号括起来的字符序列+一个字符串结束符 0Happy6个字符 H a p p y 0,有效字符,字符串结束符,字符串的有效长度:有效字符的个数,字符串与一维字符数组,字符串:一个特殊的一维字符数组将字符串放入一维字符数组存储对字符串的操作=对字符数组的操作,1.字符串的存储初始化,字符串存放在一维字符数组中 char s6=H,a,p,p,y,0;字符数组初始化:用字符串常量赋值char s6=Happy;char s=Happy;char s=Happy;数组长度=字符串的有效长度+1char t5;Happy 能存入t吗?,字符串的存储,char s80=Happy;字符串遇 0 结束第一个 0 前面的所有字符和 0 一起构成了字符串 Happy”0 之后的其他数组元素与该字符串无关,字符串由有效字符和字符串结束符 0 组成,2.对字符串的操作,将字符串放入一维字符数组存储对字符串的操作=对字符数组的操作普通字符数组:数组元素的个数是确定的,一般用下标控制循环字符串:没有显式地给出有效字符的个数,只规定在字符串结束符 0 之前的字符都是字符串的有效字符,一般用结束符 0 来控制循环循环条件:si!=0,计算字符串的有效长度,并输出该字符串。字符串的有效长度:有效字符的个数数组中第一个 0 前面的字符个数编程:为字符串赋值“Happy”,并输出。,计算字符串的有效长度,#include int main(void)int i;char s80=Happy;for(i=0;si!=0;i+);/循环体为空语句 printf(len=%dn,i);for(i=0;si!=0;i+)/输出字符串 putchar(si);/单字符的输出函数 return 0;,源程序,循环条件,len=5Happy,for(i=0;si!=0;i+)putchar(si);,3.字符串的输出,Happy,Happy,Happy,for(i=0;i len;i+)putchar(si);,puts(s);/整个字符串的输出函数,库函数stdio.h,输出到0字符停止,并把0字符转换为回车换行输出。,1.字符数组初始化:char s6=Happy;char s6,*p=s;p=“Happy”;/把字符串常量地址送给p,s数组没得到值2.逐个赋值:s0=H;s1=a;s5=0;3.输入 逐个字符输入0 代表空操作,无法输入输入时,设定一个输入结束符(如n),将输入结束符转换为字符串结束符 0整个字符串的输入gets(s)/整个字符串的输入函数,库函数stdio.h,输入到回车换行符停止,并把为回车换行转换0字符存储到数组,4.字符串的存储赋值和输入,a 2 个字符 a 和 0a 1 个字符常量,区分a 和 a,输入一个以回车结束的字符串(少于80个字符),统计其中数字字符的个数。分析:数组长度取上限80以 n 做为输入结束符1。编程实现!2。调用库函数,将大写字母转换为小写字母输出!,5、按一定规则统计字符,#include int main(void)int count,i;char s80;printf(Enter a string:);i=0;while(si=getchar()!=n)i+;si=0;/*输入结束符n字符串结束符0*/count=0;for(i=0;si!=0;i+)if(si=0)count+;printf(count=%dn,count);return 0;,源程序,Enter a string:Its 512?count=3,能省略si=0吗?,gets(s);,#include int main(void)int i,n;char s10;printf(Enter a string:);/*输入字符串*/i=0;while(si=getchar()!=n)i+;si=0;n=0;/*将字符串转换为整数*/for(i=0;si!=0;i+)if(si=0)n=n*10+(si-0);else break;printf(digit=%dn,n);return 0;,简化引例gets(s),Enter a string:123e4digit=1234,gets(s);,实践:任务一(ex04_01.cpp),编写一个字符串处理程序,程序功能为输入一个字符串,删除其中的数字字符后,全部大写输出。提示,字符串全部转成小写函数原型:char*strlwr(char*src)程序的正确运行示例:输入一个字符串:ShangHai2012!输出:shanghai!,实践:任务二(ex04_02.cpp),编写一个字符串处理程序,程序功能为输入两个英文字符串,取每个字符串的第一个单词组成一个新的字符串,全部大写输出。提示,字符串全部转成大写函数原型:char*strupr(char*src)程序的正确运行示例:输入第一个字符串:my hometown is Shanghai!输入第二个字符串:God talked to you输出:MYGOD,