(共26张PPT)
字符串
第十章
回顾
上一节课主要讲解了以下内容:
函数的结构
函数声明和函数原型
按值传递 / 按地址传递
函数的作用域规则
多文件程序中的函数
函数指针
目标
解释字符串变量和常量
解释字符串指针
执行字符串的输入/输出操作
解释各种字符串函数
解释如何将数组作为参数传递给函数
讲解如何将字符串用作函数参数
字符串变量
字符串是以空字符(‘\0’)结束的字符数组
可以将字符串常量赋给字符串变量
字符串常量是由一对双引号括起来的字符序列
空字符‘\0’自动添加到字符串的内部表示中
在声明字符串变量时,应该为这个空结束符预留一个额外元素的空间
声明字符串变量
典型的字符串变量声明语句如下所示:
char str[10];
str 是一个字符数组变量,它最多可以容纳包括空结束符在内的 10 个字符
str[0] str[1] str[2] str[3] str[4] str[5] str[6] str[7] str[8] str[9]
字符串常量
字符串常量是由一对双引号括起来的字符序列
字符串中的每个字符作为一个数组元素存储
例如 字符串“welcome”在内存中按照如下方式存储:
W E L L C O M E \0
指向字符串变量的字符指针
可以使用字符指针来存储和访问字符串
声明字符指针语法:char* pStr;
声明字符串:char str[10]=“hello”;
使用字符指针指向字符串:pStr=str;
可以使用字符指针访问字符串,例如pStr[0]=‘a’; 该代码将第一个字符修改为’a’
指向字符串常量的字符指针
可以声明字符指针直接指向字符串常量,例如char* pStr=“Welcome”;字符指针pStr将指向字符常量“Welcome”
“Welcome”为字符串常量,因此其值不能修改,例如代码pStr[0]=‘h’;将引发一个错误
W e l c o m e \0
字符串常量不能改变
字符串 I/O 操作2-1
字符串 I/O 操作是通过函数来实现的,这些函数是标准 I/O 库 stdio.h 的一部分
gets() 函数是接受通过标准输入所获得的字符串的最简单的方法
它接受按下回车键以前输入的所有字符
gets() 函数用“\0”字符替换末尾的换行符“\n”
语法:
gets(str);
字符串 I/O 操作2-2
puts() 函数用于在标准输出设备上显示字符串
语法:
puts(str);
scanf() 和 printf() 函数用于使用一条语句来接受并显示混合数据类型
接受字符串的语法如下所示:
scanf("%s", str);
显示字符串的语法如下所示:
printf("%s", str);
字符串函数
处理字符串的函数可以在标准头文件 string.h 中找到。下面列举了这些函数执行的一些操作:
连接字符串
比较字符串
在字符串中查找一个字符
将一个字符串复制到另一个字符串中
计算字符串的长度
strcat() 函数
将两个字符串连接成一个字符串
语法:
strcat(str1, str2);
将 str2 接到 str1 的末尾
函数返回 str1
strcmp() 函数
比较两个字符串并根据比较的结果返回一个整数值
语法:
strcmp(str1, str2);
函数返回值的情况如下:
如果 str1如果 str1 与 str2 相同,则返回值等于零
如果 str1>str2,则返回值大于零
strchr() 函数
判断某个字符是否在字符串中出现
语法:
strchr(str, chr);
该函数返回值的情况如下:
如果该字符在字符串中出现,将返回对应这个字符(由 chr 所指向的)在字符串 str 中第一次出现的指针
如果未出现,则返回 NULL
strcpy() 函数
将一个字符串中的值复制到另一个字符串中
语法:
strcpy(str1, str2);
str2 的值被复制到 str1 中
函数返回 str1
strlen() 函数
确定字符串的长度
语法:
strlen(str);
该函数返回一个表示 str 的长度的整数值
将数组传递给函数 3- 1
当数组被当作参数传递给函数时,传递的只是该数组的地址
不带下标的数组名引用的是该数组的地址
void main()
{
int ary[10];
.
fn_ary(ary);
.
}
将数组传递给函数 3- 2
#include
void main()
{
int num[5], ctr, sum=0;
int sum_arr(int num_arr[]);
clrscr();
for(ctr=0;ctr<5;ctr++)
{
printf(" \nEnter number %d: ", ctr+1);
scanf("%d", &num[ctr]);
}
声明数组以及其他变量
将数组传递给函数 3- 3
sum=sum_arr(num);
printf(“\nThe sum of the array is %d", sum);
}
int sum_arr(int num_arr[])
{
int i, total;
for(i=0,total=0;i<5;i++)
total+=num_arr[i];
return total;
}
函数定义
注意函数参数的定义
函数调用
注意函数参数的传递
运行程序演示
运行上述程序,并且解释如何将数组传递给函数
将字符串传递给函数的示例3 - 1
#include
#include
void main()
{
char lines[5][20];
int ctr, longctr=0;
int longest(char lines_arr[][20]);
for(ctr=0;ctr<5;ctr++)
{
printf(" \nEnter string %d: ", ctr+1);
scanf("%s", lines[ctr]);
}
字符串数组
将字符串传递给函数的示例 3- 2
longctr=longest(lines);
printf(" \nThe longest string is %s ", lines[longctr]);
getch();
}
int longest(char lines_arr[][20])
{
int i=0, l_ctr=0, prev_len, new_len;
prev_len=strlen(lines_arr[i]);
函数调用,注意函数参数的传递
函数定义
注意函数参数的定义
将字符串传递给函数的示例 3- 3
for(i++;i<5;i++)
{
new_len=strlen(lines_arr[i]);
if(new_len>prev_len)
l_ctr=i;
prev_len=new_len;
}
return l_ctr;
}
解释红色代码的作用
运行程序演示
运行上述程序,并且解释如何将字符串传递给函数
总结
本课主要讲解了以下内容:
字符串变量和常量
字符串指针
执行字符串的输入/输出操作
各种字符串函数
如何将数组作为参数传递给函数
如何将字符串用作函数参数