字符串数组
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
字符串函数应用举例
str1[7]="hello!" printf("%ld\n",strchr(str1, "e"));
str1[7]="hello!" printf("%ld\n",strchr(str1, "e")-str1+1);
{char str1[7]="hello!"; printf("%d\n",strlen(str1));}
str1=abc,str2=defgh,str3=ijklmno
说明: 说明: 不需要在scanf函数中的字符数 不需要在 函数中的字符数 函数中的 组名前加地址运算符 . 组名前加地址运算符&. 前加地址运算符
函数输入字符串时, (3)用scanf函数输入字符串时, ) 函数输入字符串时 虽然定义了每个数组的长度为5, 虽然定义了每个数组的长度为 , 但实际上输入字符>5个,这说明C语 但实际上输入字符 个 这说明 语 言没有数组超界检查功能. 言没有数组超界检查功能.
5.2.3 字符串处理函数 string.h库中提供了一些用 于字符串处理的标准函数.
#include <string.h>
功能说明 返回值 函数的一般 形式 strlen(字符串 求字符串长度 有效字符个数 字符串) 字符串 strcpy(字符 将字符串 复 字符数组 的 字符 将字符串2复 字符数组1的 数组1, 数组 ,字 起始地址 制到字符数 符串2) 符串 组1中 中
第五章 数组
授课要点
gets 和 puts
strlen , strcpy , strcmp , strchr , strcat )
五个字符串函数(
5.2 字符串
的字符数组, 字符串是一个特殊的字符数组, 它要以字符串结束标志'\0'为最后 一个元素. 一个元素.
5.2 字符串
5.2.1 字符数组与字符串 字符数组及其初始化
字符串的定义和初始化可以有如下几种形 式: char str1[6]={ 'C','h','i','n','a','\0'}; char str1[6]={"China"}; char str1[6]=" China";
str1 str2 str3
a d i
b e j
c \0 f g h \0 k l m n \0
puts函数一次只能输出一个字符串 函数一次只能输出 字符串;
puts(str1)
printf(〃%s〃,str1)
不能用puts (str1,str2)的形式一次输 不能用 的形式一次输 出两个字符串. 出两个字符串.
gets(str1)
scanf(〃%s〃,str1)
gets函数是一个用来输入一个字符串 函数是一个用来输入ห้องสมุดไป่ตู้的函数. 的函数.
说明: 说明: 字符串之间不能进行赋值操作, (2)字符串之间不能进行赋值操作, 只能采用复制的方法把一个字符串 保到另一个字符串空间( 保到另一个字符串空间(即字符数 组)中. 要求这个字符数组必须能容纳要 复制的字符串. 复制的字符串.
char str1[4]="abc", str2[3]="ok"; strcat(str1,str2); printf("str1=%s\n", str1);
#include <stdio.h> #include <string.h> #define N 10
void main() { char str[N],min[N]; int i; printf("先输入第 个字符串 先输入第1个字符串 先输入第 个字符串:"); gets (min);
for (i=2;i<=5;i++) { printf("输入第 输入第%d个字符串 个字符串:",i); 输入第 个字符串 gets (str); if (strcmp (min, str)>0) strcpy (min, str); } printf ("\n 最小的字符串是 最小的字符串是:%s\n",min); }
printf ("\n 最小的字符串是 最小的字符串是:%s\n",min); }
说明: 说明: (1)字符串比较的方法是首先对两个 字符串中的第1个字符进行比较,如 字符串中的第1个字符进行比较, 果相等则比较下一对字符,……, 果相等则比较下一对字符,……, 直到比较完或找到一对不相等的字 直到比较完或找到一对不相等的字 比较完或找到一对不相等 符为止. 符为止.
例5.5
#define N 5 …… char str1[N],str2[N],str3[N]; scanf("%3s%5s%7s",str1,str2,str3); printf("str1=%s,str2=%s,str3=%s\n",str1,str 2,str3);abcdefghijklmnopqrs↙ ↙ ……
表5.1 应用较多的几个字符串处理函数
字符串1== strcmp(字 比较两个字 字符串 字 符串1, 字符串2, 符串 , 符串 字符串 , 字符串2) 返回0 字符串 返回 字符串1>字 字符串 字 符串2, 符串 ,返 回正整数 字符串1<字 字符串 字 符串2, 符串 ,返 回负整数
表5.1 应用较多的几个字符串处理函数
strchr(字符 字符 字符) 串,字符
在字符串中找 字符
找到, 找到,返回 字符第1次 字符第 次 出现的位置 找不到, 找不到,返 回空地址
表5.1 应用较多的几个字符串处理函数
strcat(字符 将字符串 连 返回字符数 字符 将字符串2连 数组1, 数组 , 组1的首地 的首地 接到字符 字符串2) 数组1中的 址 字符串 数组 中的 有效字符 后面
�
#include <stdio.h> #include <string.h> #define N 10 void main() { char str[N],min[N]; int i; printf("先输入第 个字符串 先输入第1个字符串 先输入第 个字符串:"); gets (min);
for (i=2;i<=5;i++) { printf("输入第 输入第%d个字符串 个字符串:",i); 输入第 个字符串 gets (str); if (strcmp (min, str)>0) strcpy (min, str); }
图5.7 字符串的存储
5.2.2 字符串的输入(从 字符串的输入( 键盘键入) 键盘键入)与输出
gets()和puts() 和
char str1[9]; gets(str1); puts(str1);
char str1[9];str2[7]; gets(str1); gets(str2); puts(str1);
表5.1 应用较多的几个字符串处理函数
例5.9 输入5个字符串, 输入5个字符串,输出其中 最小的字符串. 最小的字符串.
#include <stdio.h> #include <string.h> #define N 10
void main() { char str[N],min[N]; int i; printf("先输入第 个字符串 先输入第1个字符串 先输入第 个字符串:"); gets (min); for (i=2;i<=5;i++) { printf("输入第 输入第%d个字符串 个字符串:",i); 输入第 个字符串 gets (str); if (strcmp (min, str)>0) strcpy (min, str); } printf ("\n 最小的字符串是 最小的字符串是:%s\n",min); }
#include <stdio.h> #define N 5 int main( void) { char str1[N],str2[N],str3[N]; scanf("%3s%5s%7s",str1,str2,str3); printf("str1=%s,str2=%s,str3=%s\n",str1,str 2,str3); }