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

字符串数组:例]:char cityl I[10] = {"BeiJing", "ShangHai", "TianJin""GuangZhou","WuHan";字符串结束标志多余空位补10"'J'"'n'1010'B''e''g'TOcity[0]"h''H'T1010'S''a''n''a''g'city[u]"T'n''J'n'1010'T''a'10city[2]'G''n''z''h''u'10'u''a''o''g'city[3]'H''a''n'1010101010"W'u'city[4]
例: 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常用字符串函数如下:字符串连接strcat1.注意:所有字符串处理函数的实字符串复制2strcpy参都是字符数组名或字符指针字符串比较3.strcmp字符串长度strlen4大写转小写strlwr5.小写转大写strupr6.反序---ACM无此函数strrev7
Ø利用C提供一些字符串函数,可以方便地处理字符串。 Ø常用的字符串函数在string.h库文件中。 #include Ø常用字符串函数如下: 1. strcat 字符串连接 2. strcpy 字符串复制 3. strcmp 字符串比较 4. strlen 字符串长度 5. strlwr 大写转小写 6. strupr 小写转大写 7. strrev 反序-ACM无此函数 注意:所有字符串处理函数的实 参都是字符数组名或字符指针

10.4字符串处理函数-P2321、字符串合并(连接)strcat函数格式: strcat (s1, s2)例: char s1[20]={("I am a"};s110aIm10achar s2[]={"boy"}s2"10b0Vstrcat(s1,s2);I/s1如下:1blolyl1oaam注意:第一个字符串s1要有足够长的空间,删去S1的结束标志"10'5
strcat (s1, s2); //s1如下: 5 例: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字符串处理函数-P2322、字符串的复制(1)strcpy函数格式:strcpy(字符数组1,字符串2)功能:将字符串2拷贝到字符数组1中去返值:返回字符数组1的首地址①字符数组1必须足够大。注意:②拷贝时,“10一同拷贝。③不能使用赋值语句为一个字符数组数组名s1、s2是地址常量例1:例2:① char s1[20], s2|]="abc";char s1/20], s2[20];② strcpy (sl, s2);sI - {"Hello!"};(xputs(sl);//输出abc31(×)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[20]={"am a"}, s2[]={"boy"};1010as1amb10s2oystrcpy(s1,s2);//s1如下:2101010bya0③ puts(s1);boy例2:chars1[20],s2[20]③ strcpy (s1, "CHINA");Ⅱ字符串正确复制CNHA110s1@s1=s2;?s1="CHINA";③?8均为非法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[20],s2[20];

,字符串的复制2strncpy函数2格式:strncpy(字符数组1,字符串2,长度n)功能:将字符串2的前n个字符复制到字符数组1中去,末尾不自动加0。返值:返回字符数组1的首地址。注意:#字符数组1必须足够大。例:1char s1[20]=[0],s2[20]={0];strncpy (sl, "abcdefgh", 5);3//将“abcdefgh前5个字符复制到s1中,不自动加10”。puts(s);//输出abcdestrcpy(s2,"0123456789);//输出0123456789puts(s2);
格式: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字符串处理函数-P2323、字符串比较strcmp函数格式:strcmp(字符串1,字符串2)功能:比较两个字符串比较规则:对两串从左向右逐个字符比较(ASCII码)直到遇到不同字符或10为止。返回值:返回int型整数。返回1值小于0(1)若字符串1字符串2,返回福值是0(3)若字符串1==字符串2,返回1《6-=”字荐串比较不能用注意:#必须用strcmp函数。例: int kl,k2,k3;kl=strcmp("abcd","abCD"); ll 1k2=strcmp("1234","12345); //-1310k3=strcmp("hello","hello");
格式:strcmp (字符串1, 字符串2) 功能:比较两个字符串 比较规则:对两串从左向右逐个字符比较(ASCII码), 直到遇到不同字符或‘\0’为止。 返回值:返回int型整数。 (1) 若字符串1 字符串2, 返回 值大于0 (3) 若字符串1== 字符串2, 返回 值是0 注意:字符串比较不能用“==” ,必须用strcmp函数

例1:下面的程序要求用户输入密码admin”,如果输入正确则继续程序运行,否则返回。不能写成:1char pw[20];if(pw=="admin")scanf("%s",pw);/pw不是"admin"fostrcmp(pw,"admin)!=0)return;//返回//继续5-例2: if (strcmp (s1, s2)==0)用于判断两字符串相等非法注意:if (s1==s2)
例2:if ( strcmp (s1, s2)==0) { . } 用于判断两字 符串相等 非法 注意:if (s1==s2)