本次课内容:字符数组和字符串 教学目的:掌握字符串存储方法、字符数组定义方法、初始化方法。 字符串的输入、输出及函数使用方法。 重点:字符串概念、字符二维数组,字符数组定义、初始化和输入 输出处理。 难点:二维数组概念、字符数组处理方法。 预习:二维数组 二维数组通过两个下标定义,第一个下标一般表示行,第二个 下标表示列。 2、二维数组可看作是一个一维数组,每个数组元素又是一个一维 数组。 3、二维数组初始化可用一对花括号将一行的数据括起来,也可去 掉每行的花括号,此时将所有数据按数组元素在内存的排列顺序存 放 4、二维数组元素引用时,一般采用双重循环结构,外循环变量一 般表示行下标,内循环变量一般表示列下标。 5、二维数组一般处理表或矩阵数据。 6、二维数组作为实参时,形参也应是二维数组(目前)
本次课内容:字符数组和字符串 教学目的:掌握字符串存储方法、字符数组定义方法、初始化方法。 字符串的输入、输出及函数使用方法。 重点:字符串概念、字符二维数组,字符数组定义、初始化和输入 输出处理。 难点:二维数组概念、字符数组处理方法。 预习:二维数组 1、二维数组通过两个下标定义,第一个下标一般表示行,第二个 下标表示列。 2、二维数组可看作是一个一维数组,每个数组元素又是一个一维 数组。 3、二维数组初始化可用一对花括号将一行的数据括起来,也可去 掉每行的花括号,此时将所有数据按数组元素在内存的排列顺序存 放。 4、二维数组元素引用时,一般采用双重循环结构,外循环变量一 般表示行下标,内循环变量一般表示列下标。 5、二维数组一般处理表或矩阵数据。 6、二维数组作为实参时,形参也应是二维数组(目前)
字符串和字符串的存储方法 字符串:若干有效字符的序列。 有效字符:字母、数字、专用字符、转义字符等。 字符串是借助于字符型一维数组来存放的。 规定:字符串以字符“Ⅶ0‘(ASC值为0)作为结束标志。 V0作为标志占用存储空间,但不计入串的实际长度。 C语言中无字符串类型,但允许使用“字符串常量”。在表示 字符串常量时,不需要人为在其末尾加入“0°,编译程序自动加入。 如:“ Hello”不必写成“ Hello\0” 字符串数组的定义: char数组名常量表达式|; 如: char ch[10l; 可以存放10个字符,其中包括“0。 、字符串数组的初始化 逐元素赋初值 如: char ch[10={H,’e,’l,',’o,”\0} He|1o|00000
一、字符串和字符串的存储方法 字符串:若干有效字符的序列。 有效字符:字母、数字、专用字符、转义字符等。 字符串是借助于字符型一维数组来存放的。 规定:字符串以字符‘\0‘(ASCII值为0)作为结束标志。 ’\0’作为标志占用存储空间,但不计入串的实际长度。 C语言中无字符串类型,但允许使用“字符串常量”。在表示 字符串常量时,不需要人为在其末尾加入‘0’,编译程序自动加入。 如:“Hello” 不必写成 “Hello\0” 字符串数组的定义: char 数组名[常量表达式]; 如:char ch[10]; 可以存放10个字符,其中包括‘\0’。 二、字符串数组的初始化 1、逐元素赋初值 如:char ch[10]={‘H’,’e’,’l’,’l’,’o’,’\0’}; H e l l o \0 \0 \0 \0 \0
又如: char ch10}=H,e',,",’o}; H V0O000 此例虽未加“饿0’,但由于所赋字符数不足,则自动用“0补充。 又如: charch5]={H,e',,’o’}; 此时数组不能作为字符串,按各元素字符处理(结尾无“0)。 2、指定一个字符串初值 如: char cl={“Heo”}; C编译程序自动加上“10 字符串的输入 、输入一个字符 如: char str5 scanf(%c”,<str[0J) 2、输入一个字符串 如: scanf(“%s”,str); 注:引用数组名时不加&,输入时不加引号,编译程序自动加“0。 系统以空格或回车来作为字符串的间隔符
又如:char ch[10]={‘H’,’e’,’l’,’l’,’o’}; 此例虽未加‘\0’,但由于所赋字符数不足,则自动用‘\0’补充。 又如:char ch[5]={‘H’,’e’,’l’,’l’,’o’}; 此时数组不能作为字符串,按各元素字符处理(结尾无‘\0‘)。 2、指定一个字符串初值 如:char c[ ]={“Hello”}; C编译程序自动加上‘\0’。 三、字符串的输入 1、输入一个字符 如 :char str[5]; scanf(“%c”,&str[0]); 2、输入一个字符串 如:scanf(“%s”,str); 注:引用数组名时不加&,输入时不加引号,编译程序自动加‘\0’。 系统以空格或回车来作为字符串的间隔符。 H e l l o \0 \0 \0 \0 \0 H e l l o
3、用gets(函数输入字符串 如: char str{9; gets(str) 此函数对输入的字符(包括空格)全部读入,直到遇到加车 符为止 如:输入字符串为: computer&C 四、字符串的输出 、输出单个字符 如: printf(“%c”,str);指出数组的具体元素,格式符%C 2、输出字符串 如:prin(,str);使用数组名,格式符%S 注:字符串中尾部的“0不作为输出内容。 3、用puts()函数输出字符串 如: char strl9; gets( str ) puts(str) 注: puts函数输出时将‘V0作为换行符,即每次输入一行
3、用gets( )函数输入字符串 如:char str[ 9 ]; gets(str); 此函数对输入的字符(包括空格)全部读入,直到遇到加车 符为止。 如:输入字符串为:computer & C 四、字符串的输出 1、输出单个字符 如:printf(“%c”,str[0]); 指出数组的具体元素,格式符%C 2、输出字符串 如:printf(“%s”,str); 使用数组名,格式符%S 注:字符串中尾部的‘\0‘不作为输出内容。 3、用puts( )函数输出字符串 如:char str[ 9 ]; gets( str ); puts(str); 注:puts( )函数输出时将‘\0‘作为换行符,即每次输入一行
五、字符串运算函数 1、字符串拷贝函数 格式: strep(字符数组名,字符串表达式) 如: strep(str,“ china); 注:(1)复制时,连同“0一起复制到字符数组中; (2)字符串表达式可以是字符数组名 char strl8l, str2[=(computer") strcpy( strl, str2); printi(%smn”,str1); 结果为: computer (3)对字符数组不能用“=”直接赋值; 如: char str1|81; str=china 9 是错误的 2、字符串联接函数 格式: strcat(sr1,r2); 功能:将str2联接到str的后面,最后加一个“0,结果放在str1 中 如:P169例58图525
五、字符串运算函数 1、字符串拷贝函数 格式:strcpy(字符数组名,字符串表达式) 如:strcpy( str , “china”); 注 : (1)复制时,连同‘\0‘一起复制到字符数组中; (2)字符串表达式可以是字符数组名 ; char str1[81],str2[ ]={“computer”}; strcpy( str1, str2); printf(“%s\n”,str1); 结果为: computer (3)对字符数组不能用“=”直接赋值; 如:char str1[81]; str=“china”; 是错误的 2、字符串联接函数 格式:strcat( str1,str2); 功能:将str2联接到str1的后面,最后加一个‘\0‘ ,结果 放在str1 中。 如:P169_例5.8 图5.25