《《c语言程序设计教学资料》第10章-字符串.ppt》由会员分享,可在线阅读,更多相关《《c语言程序设计教学资料》第10章-字符串.ppt(31页珍藏版)》请在三一办公上搜索。
1、第10章 字符串,字符数组,字符串的存储字符指针字符串的访问和输入/输出字符串处理函数向函数传递字符串,字符串常量,字符串的存储,C语言没有提供字符串数据类型,字符串的存取要用字符型数组来实现。字符数组是用来存放字符数据的数组。字符型数组中存储的并不一定是字符串,仅当其最后一个元素是0时,才表示字符串。0也占一个字节,但不计入字符串的实际长度,只计入数组的长度。,字符数组的初始化,对字符数组初始化,最容易理解的方式是逐个字符赋给数组中各元素。如:char c10=I,a,m,h,a,p,p,y;,如果在定义字符数组时不进行初始化,则数组中各元素的值是不可预料的。如果花括弧中提供的初值个数(即字
2、符个数)大于数组长度,则按语法错误处理。,如果初值个数小于数组长度,则只将这些字符赋给数组中前面那些元素,其余的元素自动定为空字符(即0)。,如果提供的初值个数与预定的数组长度相同,在定义时可以省略数组长度,系统会自动根据初值个数确定数组长度。,char c=I,a,m,h,a,p,p,y;,当省略对数组长度的声明时,必须人为地在数组的初始化列表中添加0,才能将其作为字符串来使用。,对字符数组可以采用和其它数组一样的方式进行初始化 可采用更为简单的方法初始化字符数组,即用字符串常量初始化字符数组,按上述方法初始化数组,可以不指定长度,编译系统会根据字符串中字符的个数来确定数组的大小,将一个字符
3、串存放在一维字符数组中,将多个字符串存放在二维字符数组中。第一维的长度表示要存储的字符串的个数,可以省略,但是第二维长度不能省略,应按照最长的字符串长度设定数组第二维的长度。,二维字符数组,例:char weekday710=“Monday”,“Tuesday”,“Wednesday”,“Thursday”,“Friday”,“Saturday”,“Sunday”;或:char weekday 10=“Monday”,“Tuesday”,“Wednesday”,“Thursday”,“Friday”,“Saturday”,“Sunday”;不能写成:char weekday=“Monday”,
4、“Tuesday”,“Wednesday”,“Thursday”,“Friday”,“Saturday”,“Sunday”;,字符串的输入/输出,有3种方法可以实现字符数组的输入/输出逐个字符输入输出(%c)整个字符串一次输入输出(%s)使用字符串处理函数gets()/puts(),可以输出带空格的字符串,例:,逐个字符输入输出(%c),for(i=0;i10;i+)printf(%c,stri);,for(i=0;i10;i+)scanf(%c,字符串的长度与字符数组的大小通常并不完全一致,更常用是借助0识别字符串的结束,例:,整个字符串一次输入输出(%s),读入一个字符串,直到与空白字符(
5、空格、回车、制表符)为止,地址,scanf函数读入字符遇到空格后结束读入字符操作,余下字符被留在了输入缓冲区,使用字符串处理函数gets()可以输入带空格的字符串,gets()以回车键键作为字符串的终止符,同时将回车符从输入缓冲区读走,但不作为字符串的一部分。而scanf()不读走回车符,回车符仍留在输入缓冲区中,要保证输入字符串的长度不超过数组的大小,可以使用限制输入字符串长度的的函数,即:fgets(数组名,sizeof(数组名),stdin);,puts()用于从括号内的参数给出的地址开始,依次输出存储单元中的字符,当遇到第一个结束符0时结束,并且自动输出一个换行符。不足:不能再输出中增加其它字符,字符指针,字符指针就是指向字符数据类型的指针 每个字符串在内存中都占用一段连续的存储空间,并有唯一确定的首地址 字符串常量本身代表的就是存放在它的常量区的首地址,是一个地址常量,字符串处理函数,strncpy(str1,strn,n);strncmp(str1,strn,n);strncat(str1,strn,n);,向函数传递字符串,例10.5:字符串复制将字符串a复制到字符串b中,要求不能使用strcpy(),
链接地址:https://www.31ppt.com/p-5896105.html