第九章字符串_第1页
第九章字符串_第2页
第九章字符串_第3页
第九章字符串_第4页
第九章字符串_第5页
已阅读5页,还剩22页未读, 继续免费阅读

下载本文档

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

文档简介

第九章字符串目标理解字符串常量理解字符数组和字符串的异同使用字符串输入/输出函数使用字符串处理函数理解指针与字符串的关系使用字符指针数组使用字符串作为函数参数2字符串简介chara='W';charb='a';charc='n';chard='g';chare='L';charf='i';如何让程序存储我的姓名?WangLicharname[15]={'W','a','n','g','L','i'};用若干个字符用字符数组用字符串3字符数组的定义与初始化1.字符数组的定义

存放字符数据的数组称为字符数组。字符数组中的每一个元素存放一个字符。

charch[10];charname[3][10];

charch[10];

也可以写成intch[10];

4字符数组的定义与初始化2.字符数组的初始化(1)字符数组的初始化的基本方法charch[5]={'h','e','l','l','o'};charch[5]={‘b',‘o',‘y};(2)如果对全体元素赋初值,可以省略长度说明

如:

charch[]={'h','e','l','l','o'};(3)二维字符数组初始化charname[3][10]={{'M','u','s','i','c'},

{'A','r','t','s'},

{'S','p','o','r','t’}};ch[0]boy\0\0ch[1]ch[2]ch[3]ch[4]5【例】给字符数组赋值且输出main()

{

inti;

charc[12]={'H','o','w','','a','r','e','','y','o','u','!'};

for(i=0;i<12;i++)

printf("%c",c[i]);

printf("\n");

}6字符串常量字符串常量是双引号括起的任意字符序列"HelloWorld""WangPing""Pleaseenteryourfullname:""Hello\"ABCD\""字符串常量中可以包含转义序列HelloWorld\0字符串结束符7字符串可按如下方式声明并初始化:charname[7]={'W','a','n','g','L','i','\0'};charname[7]={"WangLi"};charname[7]="WangLi";charname[]=“WangLi";字符串与字符数组在C语言中没有专门的字符串变量,通常用一个字符数组来存放一个字符串字符数组和字符串的区别是:字符串的末尾有一个空字符‘\0’手工加入一个空字符系统将自动加入一个空字符省略数组大小,系统自动计算,大小为后面的字符总数加1,最后一个元素存入一个空字符。8字符串的输入输出逐个字符I/O:%c整个字符串I/O:%s例用%cmain(){charstr[5];

inti;for(i=0;i<5;i++)

scanf(“%c”,&str[i]);for(i=0;i<5;i++)

printf(“%c”,str[i]);}例用%smain(){charstr[5];

scanf(“%s”,str);

printf(“%s”,str);}用字符数组名,不要加&输入串长度<数组维数遇空格或回车结束自动加‘\0’用字符数组名,遇‘\0’结束9例main()

{chara[5]={'H','e','l','l','o'};

printf("%s",a);}例main(){chara[]="Hello";

printf("%s",a);}结果:Hello#-=*

hello02314结果:Hello用“%s”输出时,遇‘\0’结束10main(){chara[]={'h','e','l','\0','l','o','\0'};

printf("%s",a);}例输出:hel

hel\0lo\0数组中有多个‘\0’时,遇第一个结束11字符串I/0函数charname[10];scanf("%s",name);printf("%s",name);格式描述串中使用转换字符串“%s”WangLiWang\0使用scanf

时,不能输入空格Wang12例字符串输入举例

How\0

are\0

you?\0

#include<stdio.h>main(){chara[15],b[5],c[5];

scanf("%s%s%s",a,b,c);

printf("a=%s\nb=%s\nc=%s\n",a,b,c);

scanf("%s",a);

printf("a=%s\n",a);}运行情况:输入:Howareyou?输出:a=Howb=arec=you?输入:Howareyou?输出:a=Howscanf中%s输入时,遇空格或回车结束13常用的字符串处理函数包含在头文件string.h字符串输出函数puts格式:puts(字符数组)功能:向显示器输出字符串(输出完,换行)说明:字符数组必须以‘\0’结束字符串输入函数gets格式:gets(字符数组)功能:从键盘输入一以回车结束的字符串放入字符数组中,并自动加‘\0’说明:输入串长度应小于字符数组维数例#include<stdio.h>main(){charstring[80];

printf(“Inputastring:”);gets(string);

puts(string);}输入:Howareyou?输出:Howareyou?14字符串I/0函数puts函数完全可以由printf

函数取代。当需要按一定格式输出时,通常使用printf

函数。printf("\n

姓名是:");puts(name);printf(“\n

家庭住址是:");puts(addrs);printf("\n

姓名是:%s",name);printf(“\n

家庭住址是:%s\n",addrs);使用puts函数输出字符串使用printf函数输出字符串15字符串示例#include<stdio.h>voidmain(){charline[30];

inti,count=0;

printf("\n

请输入一行字符:\n");

gets(line);i=0;while(line[i]!='\0'){ if(line[i]=='') count++; i++;}

printf(“\n

其中的空格总数为

%d\n",count);}Cisaprogramminglanguage在循环执行时,扫描整个数组以统计出空格‘‘的数量,直到遇到字符’\0’。每次循环执行时,都会更新计数器i和count。其中的空格总数为416字符串处理函数

5-1与字符串有关的内置函数在头文件string.h中定义要使用标准库字符串处理函数,程序前应该包含:

#include<string.h>string.hstrlenstrcpystrcmpstrcat……17字符串处理函数5-2语法

strlen(s);功能:计算字符串长度返值:返回字符串实际长度,不包括‘\0’在内strlen例对于以下字符串,strlen(s)的值为:(1)chars[10]={‘A’,‘\0’,‘B’,‘C’,‘\0’,‘D’};(2)chars[]=“\t\v\\\0will\n”;(3)chars[]=“\x69\082\n”;答案:131#include<stdio.h>#include<string.h>voidmain(){chararr[]="Beijing";

intlen1,len2;

len1=strlen(arr);len2=strlen("Shanghai");

printf("\nstring=%slength=%d",arr,len1);

printf("\nstring=%slength=%d\n","Shanghai",len2);}string=Beijinglength=7string=Shanghailength=818例charstr1[20],str2[20];str1={“Hello!”};()str2=str1;()字符串处理函数5-3语法

strcpy(字符数组1,字符串2)功能:将字符串2,拷贝到字符数组1中去返值:返回字符数组1的首地址说明:字符数组1必须足够大拷贝时‘\0’一同拷贝不能使用赋值语句为一个字符数组赋值strcpy

源字符串=Wechangelives

目标字符串=Wechangelives#include<stdio.h>#include<string.h>voidmain(){ charsource[]="Wechangelives"; chartarget[20];

strcpy(target,source);

printf("\n

源字符串=%s",source);

printf("\n目标字符串=%s\n",target);}19字符串处理函数5-4语法

strcmp(str1,str2)功能:比较两个字符串比较规则:对两串从左向右逐个字符比较(ASCII码),直到遇到不同字符或‘\0’为止返值:返回int型整数,a.若字符串1<字符串2,返回负整数b.若字符串1>字符串2,返回正整数c.若字符串1==字符串2,返回零说明:字符串比较不能用“==”,必须用strcmpstrcmp

请输入用户名:john

请输入密码:123456

用户名和/或密码无效#include<stdio.h>#include<string.h>voidmain(){ charusername[15],pwd[15];

printf("\n

请输入用户名:"); gets(username);

printf("\n

请输入密码:");

gets(pwd);

if((strcmp(username,"John")==0)&&(strcmp(pwd,"123456")==0))

printf("\n

您已成功登录\n"); else

printf("\n

用户名和/或密码无效\n");}

请输入用户名:John

请输入密码:123456

您已成功登录20字符串处理函数5-5语法

strcat(字符数组1,字符数组2)功能:把字符数组2连到字符数组1后面返值:返回字符数组1的首地址说明:字符数组1必须足够大连接前,两串均以‘\0’结束;连接后,串1的‘\0’取消,新串最后加‘\0’#include<stdio.h>#include<string.h>voidmain(){ charsource_string[]="isverygood"; chartarget_string[30]="ACCP4.0";

strcat(target_string,source_string);

printf("\n

源字符串=%s",source_string);

printf("\n

目标字符串=%s\n",target_string);}strcat

源字符串=isverygood

目标字符串=ACCP4.0isverygood21指向字符串的指针被指向的字符串可以是一个常量字符串,也可以是一个存储着字符串的字符数组char*ptr="CLanguage";CLanguage\0ptrchar*ps="Wechangelives";intn=10;ps=ps+n;printf("%s\n",ps);Wechangelives\0ps

lives22指向字符串的指针charuname[30]="wahaha

yiyiyaya";char*p;intcount;count=0;for(p=uname;*p!='\0';p++){ if(*p=='a') count++;}Wahahayiyiyaya\0psunamecount05循环23字符指针数组字符指针数组:一个数组中的各个元素都是字符指针char*names[]={"Apple","Pear","Peach","Banana"};Apple\0Pear\0Banana\0Peach\0EE05EE20EE44EE87names各字符串的首地址24字符指针数组示例voidmain(){

char*names[]={"Apple",

"Banana",

"Pineapple", "Peach", "Strawberry", "Grapes"};

char*temp;

printf(“\n%s%s",names[2],names[3]);

temp=names[2];

names[2]=names[3];

names[3]=temp;

printf("\n%s%s",names[2],names[3]);

p

温馨提示

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

最新文档

评论

0/150

提交评论