第8章字符数据处理_第1页
第8章字符数据处理_第2页
第8章字符数据处理_第3页
第8章字符数据处理_第4页
第8章字符数据处理_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、字符常量是用单引号括起来的一个字符,如字符常量是用单引号括起来的一个字符,如a、5 注意:注意:(1)字符常量只能用单引号括起来,不能用双引号或其他)字符常量只能用单引号括起来,不能用双引号或其他括号。括号。(2)字符常量只能是单个字符,不能是字符串。)字符常量只能是单个字符,不能是字符串。(3)字符可以是字符集中的任意字符。)字符可以是字符集中的任意字符。转义字符是一种特殊的字符常量。转义字符以反斜线转义字符是一种特殊的字符常量。转义字符以反斜线开开头,后跟一个或几个字符。头,后跟一个或几个字符。 例:转义字符的使用例:转义字符的使用#include void main() printf(

2、ab ctderfn );printf(hijktLbMn );运行结果:运行结果:f ab cdehijk M字符串是由一对双引号括起的字符序列字符串是由一对双引号括起的字符序列 ,如,如“55”、“china”。字符串和字符常量主要有以下区别:字符串和字符常量主要有以下区别: (1)字符常量由单引号括起来,字符串由双引号括起来。)字符常量由单引号括起来,字符串由双引号括起来。(2)字符常量只能是单个字符,字符串则可以含一个或多)字符常量只能是单个字符,字符串则可以含一个或多个字符,也可以不含字符,如个字符,也可以不含字符,如,简称空串。,简称空串。(3)字符串在存储时,系统会自动在最后一个

3、字符后加一)字符串在存储时,系统会自动在最后一个字符后加一个个0,称为字符串结束标志。,称为字符串结束标志。如:如:a,在内存中占一个字节,在内存中占一个字节 a ,而,而a在内存中占两个字在内存中占两个字节节 a 0 。 字符型变量即字符变量,用来存储字符常量,即单个字符。字字符型变量即字符变量,用来存储字符常量,即单个字符。字符变量的类型说明符是符变量的类型说明符是char。如:如:char a, b; 对字符变量赋值:对字符变量赋值:a=x; 120b=y; 例:大小写字母的转换例:大小写字母的转换#include void main() char a, b;a=a;b=b;a=a-32

4、;b=b-32;printf(%c, %cn%d, %dn, a, b, a, b);运行结果:运行结果:A, B65, 66字符与整型运算字符与整型运算用来存放字符的数组称为字符数组。用来存放字符的数组称为字符数组。 如:如:char c10; char c510; 字符数组也可以初始化,如:字符数组也可以初始化,如:char str16= T,h,i,s, ,i,s, ,a, ,s,t,r,i,n,g 字符串总是以字符串总是以0作为串的结束标志,作为串的结束标志, 如:如:char str =“This is a string”; 以下两种初始化方法是不等价的:以下两种初始化方法是不等价的

5、:char c1 =C, ,p,r,o,g,r,a,m;char c2 =C program; 例:从键盘输入字符串,然后将其输出到显示屏幕例:从键盘输入字符串,然后将其输出到显示屏幕#include void main() char st15;printf( input string:n );scanf( %s,st );printf( %sn,st );运行结果:运行结果:input string:ABCDEFG(回车)(回车)ABCDEFG1用字符数组存放一个字符串用字符数组存放一个字符串例:用字符数组存放一个字符串并输出例:用字符数组存放一个字符串并输出 #include void m

6、ain()() char str =Hello, World!; int i; printf(%sn, str); for( i=0; stri!=0; i+)printf(%c, stri); printf( n ); 运行结果:运行结果: Hello, World! Hello, World!2用字符型指针指向一个字符串用字符型指针指向一个字符串例:用字符指针指向一个字符串并输出例:用字符指针指向一个字符串并输出#include void main( ) char *str=Hello, World!; int i; printf( %sn, str ); for(i=0; *(str+i

7、)!=0; i+ )printf(%c, *(str+i) ); printf( n ); 运行结果:运行结果: Hello, World! Hello, World!可以写成:可以写成:char *str;str=Hello,World!;*(str+i)!=0 可以代之以可以代之以*(str+i)或或注意:注意:定义语句:定义语句: char *str=Hello, World!;可以等价地写成:可以等价地写成: char *str; str=Hello, World!;但定义语句:但定义语句: char str =Hello, World!;不能写成:不能写成: char str30;

8、str=Hello, World!;字符串指针作函数参数,可以将一个字符串的地址从一个字符串指针作函数参数,可以将一个字符串的地址从一个函数传递到另一个函数函数传递到另一个函数 例:用函数调用实现字符串的拷贝例:用函数调用实现字符串的拷贝#include void copy_str(char from , char to ) int i=0; while(fromi!=0 ) toi=fromi; i+; toi=0 ;可换为指针可换为指针char *from, char *to void main()() char a =I love China ; char b =Hello the wo

9、rld; printf(string a is %snstring b is %sn, a, b); copy_str(a, b); printf(string a is %snstring b is %sn, a, b);A串的值应小串的值应小于等于于等于b可换为指针可换为指针char *a char *b 1字符串输入字符串输入gets函数函数 调用方式:调用方式:gets(字符数组名)(字符数组名)函数功能:函数功能:从键盘上读取从键盘上读取1个字符串(可以包含空格),并将其存储到字符个字符串(可以包含空格),并将其存储到字符数组中。数组中。使用说明:使用说明:gets( ) 读取的字符

10、串,其长度没有限制,程序员要保证字符数读取的字符串,其长度没有限制,程序员要保证字符数组有足够大的空间,用来存放输入的字符串。组有足够大的空间,用来存放输入的字符串。该函数读入的字符串中允许包含空格,遇回车结束。该函数读入的字符串中允许包含空格,遇回车结束。gets函数一次只能读入一个字符串,而函数一次只能读入一个字符串,而scanf函数可以一次读入函数可以一次读入多个字符串多个字符串( 。 2字符串输出字符串输出puts函数函数调用方式:调用方式:puts(字符数组名)(字符数组名)函数功能:函数功能: 把字符数组中存放的字符串,输出到显示器上,直到遇到把字符数组中存放的字符串,输出到显示器

11、上,直到遇到0为止,并用为止,并用n取代取代0输出。所以用输出。所以用puts( ) 函数输出字函数输出字符串时,会在输出后自动换行,而不必另加换行符。符串时,会在输出后自动换行,而不必另加换行符。使用说明:使用说明: 字符串中允许包含转义字符,输出时产生一个控制操作。字符串中允许包含转义字符,输出时产生一个控制操作。该函数一次只能输出一个字符串,而该函数一次只能输出一个字符串,而printf( ) 函数一次能输函数一次能输出多个字符串。出多个字符串。3字符串比较字符串比较strcmp函数函数调用方式:调用方式:strcmp(字符串(字符串1 ,字符串字符串2)函数功能:函数功能:比较两个字符

12、串的大小。比较两个字符串的大小。如果:字符串如果:字符串1=字符串字符串2,函数返回值为,函数返回值为0; 字符串字符串1字符串字符串2,函数返回一个正整数。,函数返回一个正整数。使用说明:使用说明:字符串比较是以对应字符的字符串比较是以对应字符的ASCII代码值进行比较的。代码值进行比较的。两个字符串比较时,从左边第一个字符起找第一个不相等的两个字符串比较时,从左边第一个字符起找第一个不相等的字符,以这两个字符的字符,以这两个字符的ASCII代码值的大小决定两个字符串代码值的大小决定两个字符串的大小。的大小。不能使用关系运算符不能使用关系运算符“=”来比较两个字符串,只能用来比较两个字符串,

13、只能用strcmp( )函数来处理。)函数来处理。 例:演示例:演示gets函数和函数和strcmp函数的应用。函数的应用。 #include #include #include void main( )char pass_str80; int i=0;while(1)printf(Input Password: n);gets(pass_str); if(strcmp(pass_str, “password”)!=0) printf(Password Error,press any key continue); 输入输入密码密码elsebreak; i+;if(i=3) exit(0); .

14、 次数限次数限制制密码正确密码正确退出循环退出循环4字符串拷贝字符串拷贝strcpy函数函数调用方式:调用方式:strcpy(字符数组(字符数组, 字符串)字符串)函数功能:函数功能:将将“字符串字符串”完整地复制到字符数组中,包括完整地复制到字符数组中,包括0。字符数组中。字符数组中原有内容被覆盖。原有内容被覆盖。使用说明:使用说明:字符数组必须定义得足够大,以便容纳复制过来的字符串。字符数组必须定义得足够大,以便容纳复制过来的字符串。不能用赋值运算符不能用赋值运算符“”将一个字符串直接赋值给一个字符数组,将一个字符串直接赋值给一个字符数组,只能用只能用strcpy函数来处理。函数来处理。例

15、如:例如:char str80;str=hello;是错误的。可以这样理解:定义数组时,系统就会在内存开辟是错误的。可以这样理解:定义数组时,系统就会在内存开辟一块连续的内存空间用来存放数组各元素,数组的首地址就是一一块连续的内存空间用来存放数组各元素,数组的首地址就是一个固定的值了,而数组名个固定的值了,而数组名str正代表这个固定的值。也就是说,正代表这个固定的值。也就是说,数组名是一个常量,常量是不能出现在赋值运算符的左边的。数组名是一个常量,常量是不能出现在赋值运算符的左边的。5字符串连接字符串连接strcat函数函数调用方式:调用方式:strcat(字符数组,字符串)(字符数组,字符

16、串)函数功能:函数功能:把把“字符串字符串”连接到字符数组中原有字符的后面,并存储于字符数连接到字符数组中原有字符的后面,并存储于字符数组中。字符数组中原来的结束标志组中。字符数组中原来的结束标志0,被,被“字符串字符串”的第一个字的第一个字符覆盖,而符覆盖,而“字符串字符串”末尾的结束标志则作为连接后新串的结束标末尾的结束标志则作为连接后新串的结束标志。志。使用说明:使用说明:编程者要注意保证字符数组定义得足够大,以便容纳连接后的新字编程者要注意保证字符数组定义得足够大,以便容纳连接后的新字符串;否则,会因长度不够而产生问题。符串;否则,会因长度不够而产生问题。连接前两个字符串都有结束标志连

17、接前两个字符串都有结束标志0,连接后字符数组中存储的字,连接后字符数组中存储的字符串的结束标志符串的结束标志0被覆盖,只在新字符串的末尾保留一个被覆盖,只在新字符串的末尾保留一个0。6求字符串长度求字符串长度strlen函数函数调用方式:调用方式:strlen(字符串)(字符串)其中其中“字符串字符串”可以是字符串常量,也可以是字符数组。可以是字符串常量,也可以是字符数组。函数功能:函数功能:求字符串(串常量或字符数组)中字符的个数(不包含求字符串(串常量或字符数组)中字符的个数(不包含结束标志),并返回该值。结束标志),并返回该值。 7将字符串中大写字母转换成小写将字符串中大写字母转换成小写strlwr函数函数调用方式:调用方式:strlwr(字符串)(字符串)函数功能:函数功能:将字符串中的大写字母转换成小写,其他字符(包括小写字将字符串中的大写字母转换成小写,其他字符(包括小写字母和非字母字符)不转换。母和非字母字符)不转换。 8将字符串中小写字母转换成大写将字符串中小写字母转换成大写strupr函数函数调用方式:调用方式:strupr(字符串)(字符串)函数功能:函数功能:将字符串中小写字母转换成大写,其他字符(包括大将字符串中小写字母转换成大写,其他字符(包括大写字母和非字母字符)不转换。写字母和非字母

温馨提示

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

评论

0/150

提交评论