
程序设计基础(上) 张立红 13405330459(88028) QQ:2653453357 9#501
程序设计基础(上) 张立红 13405330459(88028) QQ:2653453357 9#501

第10章, 字符串 10.1字符串常量 10.2如何字符串变量 10.3字符串的输入输出 10.4字符指针与字符串 10.5字符串数组与字符串处理函数 10.6程序举例 恩
10.1 字符串常量 10.2 如何字符串变量 10.3 字符串的输入输出 10.4 字符指针与字符串 10.5 字符串数组与字符串处理函数 10.6 程序举例 第10章 字符串

字符串数组-P228 >定义:构成数组的数据是字符串 >说明:字符串数组实际上是字符型的二维数组每一行都 是存放字符串的字符数组。 》>字符串数组初始化 字符串数组的初始化除了可以用二维数组初始化的方式外, 还可以按如下方式进行初始化: char 数组名行数nl[列数m=字符串1,字符串2,.: 其中:每个字符串的长度应小于m1(因为字符串的结 尾符\0'占用一个单元)。 例如:char cityl3]I0={"BeiJing'","ShangHai'","TianJin'”};
char 数组名[行数n][列数m] ={字符串1,字符串2,.}; 例如:char city[3][10]={"BeiJing" , "ShangHai" , "TianJin” };

字符串数组: char city[][10]={"BeiJing","ShangHai","TianJin", "GuangZhou","WuHan"); 字符串结束标志 多余空位补0 city[0] B 'e' 7 J 'n' g 0 0 city[1] 'S' 'h' a 'n' 'g' H 'a' 0 0 city[2☒ T a 'n' J 'n' 0 0 0 city[3] G' 'u' 'a' 'n' 'g' 'Z 'h' 'o' 'u' 0 city[4] H' 'n' 0 0 0 0
例: char city[ ][10] = { "BeiJing" , "ShangHai" , "TianJin" , "GuangZhou" , "WuHan" }; 'B' 'e' 'i' 'J' 'i' 'n' 'g' 0 0 0 'S' 'h' 'a' 'n' 'g' 'H' 'a' 'i' 0 0 'T' 'i' 'a' 'n' 'J' 'i' 'n' 0 0 0 'G' 'u' 'a' 'n' 'g' 'Z' 'h' 'o' 'u' 0 'W' 'u' 'H' 'a' 'n' 0 0 0 0 0 city[0] city[1] city[2] city[3] city[4]

10.4字符串处理函数-P232 >利用C提供一些字符串函数,可以方便地处理字符串。 >常用的字符串函数在string.h库文件中。 #include >常用字符串函数如下: 1. strcat 字符串连接 2. strcpy 字符串复制 注意:所有字符串处理函数的实 3. strcmp 字符串比较 参都是字符数组名或字符指针 4. strlen 字符串长度 5. strlwr 大写转小写 6. strupr 小写转大写 7. strrev 反序-ACM无此函数
Ø利用C提供一些字符串函数,可以方便地处理字符串。 Ø常用的字符串函数在string.h库文件中。 #include Ø常用字符串函数如下: 1. strcat 字符串连接 2. strcpy 字符串复制 3. strcmp 字符串比较 4. strlen 字符串长度 5. strlwr 大写转小写 6. strupr 小写转大写 7. strrev 反序-ACM无此函数 注意:所有字符串处理函数的实 参都是字符数组名或字符指针

10.4字符串处理函数-P232 1、字符串合并(连接) ●streati函数 格式:strcat(s1,s2) 例:char s1[20]="lama"; a 1010 . char s2[]={"boy"}; s2b o y10' strcat(s1,s2);lls1如下: a m a b y0 注意:第一个字符串s1要有足够长的空间,删去 s1的结束标志10'。 6
strcat (s1, s2); //s1如下: 6 例:char s1[20]={"I am a "}; char s2[ ]={"boy"}; I a m a \0 \0 . . . . . b o y '\0' I a m a b o y \0 注意:第一个字符串s1要有足够长的空间,删去 s1的结束标志’\0’ 。 s1 s2 格式:strcat (s1, s2)

10.4字符串处理函数-P232 2、字符串的复制 (1)strepyi函数 格式:strcpy(字符数组1,字符串2) 功能:将字符串2拷贝到字符数组1中去 返值:返回字符数组1的首地址 注意:①字符数组1必须足够大。 ②拷贝时,0’一同拷贝。 ③不能使用赋值语句为一个字符数组贝 数组名s1、s2 例1: 例2: 是地址常量 1 char s1[201,s20="abc"; ①char,s2[20] ②strcpy(s1,s2); ② s1={"Hello!");(x) ③ puts(s1);/输出abc ③ s2=s1; ()
格式:strcpy (字符数组1,字符串2) 功能:将字符串2拷贝到字符数组1中去 返值:返回字符数组1的首地址 注意:字符数组1必须足够大。 拷贝时, ‘\0’一同拷贝。 不能使用赋值语句为一个字符数组赋值。 例1: ① char s1[20], s2[]="abc"; ② strcpy (s1, s2); ③ puts(s1);//输出abc 例2: ① char s1[20], s2[20]; ② s1 = {"Hello!"}; () ③ s2 = s1; () 数组名s1 、s2 是地址常量

例1:①char s1[2o]="Iama",s2[]="boy"; s1 a 1010 s2 6 0 y 10 ② strcpy(s1,s2);ls1如下: y 1o a 1010 ③puts(s1); boy 例2:char s1[10],s2[10]; ⑤strcpy(s1,"CHINA");I∥字符串正确复制 s1 ⑥s1=s2; ⑦s1="CHINA"; ⑥⑦⑧均为非法 strcpy ("CHINA",s1);
例1:① char s1[20]={" I am a "}, s2[ ]={"boy"}; s1 I a m a \0 \0 s2 b o y \0 b o y \0 a \0 \0 ② strcpy (s1, s2); //s1如下: ③ puts(s1); ⑤ strcpy ( s1, "CHINA"); //字符串正确复制 s1 C H I N A \0 ⑧strcpy ("CHINA" , s1); ⑥s1=s2; ⑦s1= "CHINA"; ⑥⑦⑧均为非法 例2:char s1[10],s2[10];

2、字符串的复制 (2)strncpy函数 格式:strncpy(字苻数组1,字苻串2,长度n) 功能:将字苻串2的前n个字符复制到字符数组1中去,末尾 不自动加0'。 返值:返回字符数组1的首地址。 注意:字符数组1必须足够大。 例: ①char s120]={0},s2201={0; ②strncpy(sl,“abcdefgh”,5); ③ /将“abcdefgh”前5个字符复制到s1中,不自动加0'。 ③ puts(sl);∥输出abede ④ strcpy(s2,"0123456789"): ⑤ puts(s2); ∥输出0123456789
格式:strncpy (字符数组1, 字符串2, 长度n) 功能:将字符串2的前n个字符复制到字符数组1中去,末尾 不自动加'\0' 。 返值:返回字符数组1的首地址。 注意:字符数组1必须足够大 。 例: ① char s1[20]={0},s2[20]={0}; ② strncpy (s1, “abcdefgh” , 5); ③ //将“abcdefgh”前5个字符复制到s1中,不自动加‘\0’ 。 ③ puts (s1); // 输出abcde ④ strcpy (s2, "0123456789"); ⑤ puts(s2); // 输出0123456789

10.4字符串处理函数-P232 3、字符串比较 strcmp函数 格式:stremp(字符串1,字符串2) 功能:比较两个字符串 比较规则:对两串从左向右逐个字符比较(ASC码), 直到遇到不同字苻或0’为止。 返回值:返回int型整数。 (1)若字符串1字符串2,返回值大于1 (3)若字符串1==字符串2,返回值是0 注意: 字特串比校不能用“=二”,必须用strempa函数。 例:intk1,k2,k3; ① kl=strcmp("abcd","abCD");∥1 ② k2=strcmp("1234","12345");∥-1 ③ k3=strcmp("hello'","hello");∥0 恩
格式:strcmp (字符串1, 字符串2) 功能:比较两个字符串 比较规则:对两串从左向右逐个字符比较(ASCII码), 直到遇到不同字符或‘\0’为止。 返回值:返回int型整数。 (1) 若字符串1 字符串2, 返回 值大于1 (3) 若字符串1== 字符串2, 返回 值是0 注意:字符串比较不能用“==” ,必须用strcmp函数