字符串课件讲解_第1页
字符串课件讲解_第2页
字符串课件讲解_第3页
字符串课件讲解_第4页
字符串课件讲解_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

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

文档简介

第5章数组1.熟练掌握一维数组、二维数组、字符数组的定义、初始化。2.熟练掌握数组元素的引用方法。3.熟练掌握C程序处理字符串的常用方法。学习目标主要内容一维数组字符数组和字符串二维数组

字符型数组也是一维数组。在定义字符型数组的同时可对其初始化,用{}将初始化数据括起。例如:语句charstr1[]={‘p’,‘r’,‘o’,‘g’,‘r’,‘a’,‘m’};定义了一个有七个元素的字符数组str1[],并用花括号中的字符常量对数组进行初始化。下面的语句实现的是同样的功能:

charstr1[]={112,114,111,103,114,97,109};所不同的是,花括号中的数据不是字符常量本身,而是字符常量相应的ASC代码值。设数组str1[]从地址为2000H的内存单元开始存放,由于一个字符型数据占一个字节,所以各数组元素的存储单元地址从2000H到2006H。

5.2字符型数组与字符串

一.字符型数组

字符型数组str1在内存中的存储情况:

【例5-4】从键盘输入十个字符,统计字符'g'出现的次数。

#include<stdio.h>

voidmain(){intcounter=0,i;charc[10];printf("Pleaseinputtencharacters\n");for(i=0;i<=9;i++)scanf("%c",&c[i]);for(i=0;i<=9;i++)if(c[i]!='g')continue;elsecounter++;printf("Charatergappears%dtimes.\n",counter);

}C语言不支持字符串变量,而是通过字符数组对字符串进行存储和处理。字符数组的一个元素对应于字符串中的一个字符,最后用转义字符“\0”(ASC码表中的NULL字符)作为字符串的结束符。因此,n个字符的字符串,须占用n+1个字节的内存空间。二.字符串可以用字符串对字符数组初始化,其格式为:char字符数组名[元素个数]="字符串";或:

char字符数组名[]="字符串";

例如,语句:charstr2[]=“program”;定义了字符数组str2[],并用字符串"program"对其初始化。

2000H'p'2001H'r'2002H'o'2003H'g'2004H'r'2005H'a'2006H'm'2007H'\0'

假定数组str2[]从地址为2000H的内存单元开始存放,str2[]在内存中的存储情况如下图所示:

【例5-5】使用scanf()函数和printf()函数输入并输出字符串。

#include<stdio.h>

voidmain()

{charstr[]="whatisyourname?";charname[20];printf("%s\n",str);scanf("%s",name);printf("\nMynameis%s.\n",name);

}输出对象以字符数组名str表示不可将name写成&name【例5-6】编程实现字符串复制,同时将小写字母变换成大写字母。分析:由于在程序中不能将一个字符串赋值给另一个字符数组,所以采用逐个字符赋值的办法实现字符串复制。注意:字符串结束符“\0”

也是字符串的组成部分。#include<stdio.h>

voidmain()

{chara[20],b[20];inti=0;printf("Pleaseenterastring:\n");scanf("%s",a);dob[i]=(a[i]>='a'&&a[i]<='z')?a[i]-32:a[i];

while(a[i++]!='\0');printf("Copyedstring:%s\n",b);}三.常用的字符串处理函数为了方便对字符串的处理,C语言提供了若干字符串处理函数。在使用这些函数时,应在程序的开始使用预处理命令:

“#include<stdio.h>”

或“#include<string.h>”1.字符串输入函数gets()gets()函数的作用是:从键盘上输入一个字符串,并把它存放在参数所指示的字符数组中,输入的字符串以<回车>作为结束。函数gets()的调用格式:

gets(字符数组名)

如果函数调用成功,将返回字符数组的首地址,否则,返回空值NULL。

2.字符串输出函数puts()

函数puts()的作用是:将参数中提供的字符串输出到显示屏。函数puts()的调用格式:

puts(字符数组名或字符串常量)

如果函数调用成功,将返回字符串结束符“\0”,否则,返回一个非0值。

说明:在使用gets()、puts()函数之前,应当使用预处理命令

#include<stdio.h>。3.求字符串长度函数strlen()

函数strlen()的作用是:统计由参数提供的字符串所包含的字符个数(字符串末尾的“\0”

不计在内)。函数strlen()的调用格式:

strlen(字符数组名)

如果函数调用成功,将返回字符个数。

4.字符串连接函数strcat()

函数strcat()的作用是:用于连接二个由参数提供的字符串,将第二个参数提供的字符串连接在第一个参数提供的字符串之后,成为一个新的字符串。函数strcat()的调用格式:

strcat(字符数组1,字符数组2)

如果函数调用成功,将返回字符数组1。

说明:

(1)字符数组1要定义得足够大以便能容纳连接后的新字符串。

(2)字符数组2既可以是字符数组名,也可以是字符串常量。

例如:

charc[30]="China";puts(strcat(c,"isagreatcountry."));5.字符串拷贝函数strcpy()

函数strcpy()的作用是:用于拷贝由参数提供的字符串,将第二个参数提供的字符串拷贝到由第一个参数提供的字符数组中。该数组中原有的字符串将被覆盖。函数strcpy()的调用格式:

strcpy(字符数组1,字符数组2)

如果函数调用成功,将返回字符数组1。说明:字符数组2既可以是字符数组名,也可以是字符串常量。6.字符串比较函数strcmp()

函数strcmp()的作用是:用于比较二个由参数提供的字符串的大小。比较二个字符串的大小,就是依次比较二个字符串中字符的

ASC代码值,若二个字符串中各对应位置上的字符都相同,则认为这二个字符串相等。若第一个字符串中某个位置上字符的ASC代码值大于第二个字符串中对应位置上字符的ASC代码值,而在此之前二个字符串中对应位置上的字符都相同,则认为第一个字符串大于第二个字符串。反之,则认为第二个字符串大于第一个字符串。

函数strcmp()的调用格式:

strcmp(字符数组1,字符数组2)

如果函数调用成功,返回值如下:为0,当字符数组1等于字符数组2

返回值:为1,当字符数组1大于字符数组2

为–1,当字符数组1小于字符数组2

例如,比较字符串“English”和“England”,按上述规则,

strcmp(“English”,“England”)的返回值为1,而strcmp("England","English")

的返回值为-1。说明:字符数组1、字符数组2既可以是字符数组名,也可以是字符串常量。【例5-7】预先设定以字符串“123456”为密码,再从键盘输入一个字符串,若和密码相符,显示:Welcome!,否则显示:Sorry!#include<stdio.h>#include<string.h>voidmain(){charpw[]="123456",c[10];printf("Pleaseinputyourpassword:\n");gets(c);if(strcmp(pw,c)==0)printf("Welcome!\n");elseprintf("Sorry!\n");}

必须使用strcmp()函数

8.将字符串中小写字母转换成大写字母函数strupr()

温馨提示

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

评论

0/150

提交评论