计算机构造型数据结构2.ppt
文本预览下载声明
第4章 构造型数据类型 字符串与字符数组 主要内容 用字符数组表示字符串 定义和引用 初始化 输入和输出 字符串的输入和输出 字符串处理函数 例:下面两个赋值的不同 char word1[]={‘W’,’o’,’r’,’l’,’d’,’!’} char word1[]={‘W’,’o’,’r’,’l’,’d’,’!’,’\0’} Word1是一个字符数组,它有6个元素,每个元素都是一个字符,它不是一个字符串,因它没有结束符 Word2是一个字符串,它有6个元素(长度为6),因为串结束符不是串的一部分 四种等价的初始化 char word1[8]={‘W’,’o’,’r’,’l’,’d’,’!’,’\0’} char word2[]={‘W’,’o’,’r’,’l’,’d’,’!’,’\0’} char word3[]={“World”} char word3[]=“World” 注意:一个字符串常量代表一个指向无名数组的起始字符的指针,该数组被双引号之间的字符以及一个额外字符’\0’初始化. 如printf(“World \n”);与下列式子等价 char world[]={‘W’,’o’,’r’,’l’,’d’,’!’,’\0’};printf(world); 注意: 一个字符串可以直接赋给一个字符串常量:如char *p=“world” 字符串的输入与输出 一、输入 1)使用%s做为输入函数时: 如:char word[15]; scanf(“%s”,word); 正确 scanf(“%s”,word);和scanf(“%s”,word[3]) ; 错误的 注意:使用%s时输入实际上只读入一个字非一句,遇到空白字符停止(空格,制表符或换行) 2)调用库函数gets() 二、输出 1)字符串输出printf ()函数,它遇到第一个\0时就终止输出 2)调用库函数puts() 它将字符串输出然后再输出一个换行符因此不需加’\n’ 『程序4.10』 #include stdio.h #include string.h main() { char s1[15]=Happy; char s2[25]= Birthdays; char s3[16]=“Happy Birthdays” ;\*如果是15会出现什么状态*\ char *p= to you!; strcat(s1,s2); strcpy(s2,s1); strcat(s2,p); printf(\ns1=%s \ns2=%s \ns3=%s,s1,s2,s3); printf(\n%s%2d ,\n%s%2d ,\n%s%2d\n, strcmp(s1,s3)=,strcmp(s1,s3), strcmp(s1,s2)=,strcmp(s1,s2),strcmp(s2,s1)=,strcmp(s2,s1)); } * * 字符数组的定义 字符数组的定义形式: 一维:char 数组名[常量表达式] 二维:char 数组名[常量表达式1][常量表达式2] 『说明』 char:表示字符数组,每个元素都是字符型变量。 数组名:数组的名称,命名规则与变量的名称一样。 常量表达式:用方括号括起;1维:表示数组元素的个数,即数组的长度,它是一个整型值,其中可以包含常数和符号常量,但不能包含变量;2维:常量表达式1表示行,常量表达式2表示列,元素个数为:常量表达式1×常量表达式2 如:char a[10], x[2][4]; 系统自动加上’\0’ 字符数组的引用 字符数组元素的表示形式 1维:数组名 [下标] 2维: 数组名[下标1][下标2] 『说明』 数组必须先定义后使用 不能一次引用整个数组 只能逐个引用数组元素 数组元素的下标可以是整型常量或整型表达式,其值代表元素相对于数组起始地址的偏移量,所以从0开始顺序编号,取值范围: 1维:0~元素个数-1; 2维:下标1:0~行数-1,下标2:0~列数-1 如定义了1维字符数组 str[3],则其数组元素有str[0],str[1],str[2] 如定义了2维字符数组a[2][2],则数组元素有a[0][0],a[0][1],a[1][0],a[1][1] 字符数组的初始化 逐个元素赋值 全部赋值 char a[10]={‘I’, ‘ ’, ‘a’, ‘m’, ‘ ’, ‘h’, ‘a’, ‘p’, ‘p’, ‘y’ }; 可省略一维长度: char a[ ]={‘I’, ‘ ’, ‘a’, ‘m’, ‘ ’, ‘h’, ‘a’, ‘p’, ‘p’, ‘y’ }; 部分赋值 char a[10]={‘h’, ‘a’, ‘p’, ‘p’, ‘y’}
显示全部