的 华中科技大学 计算机学院(5) 2001-3-26
2001-3-26 华中科技大学 数据结构 计算机学院(5)
第四章,字符串/串( str ing) 4.1串的定义与操作 1.术语 (1)串一由零个或多个字符组成的有限序列 n个字符C1,C2,,Cn组成的串记作: s=C1C2...C n>=0 其中:s为串名,C1C2.Cn为串值n为串长 例 PASCA语言 sl- datal234 s2=123*abc C语 s1=data1234″ s2="123*abc A为字符 "A"为字符串 %c为字符格式%s为字符串格式 (2)空串一不含字符的串/长度为零的串。 PASCA语言:s=2 C语言:
第四章,字符串/串(string) 4.1 串的定义与操作 1.术语 (1)串----由零个或多个字符组成的有限序列。 n个字符C1,C2,...,Cn组成的串记作: s='C1C2...Cn' n>=0 其中:s为串名, C1C2...Cn为串值 n为串长 例 PASCA语言: s1='data1234' s2='123*abc' C语言: s1="data1234" s2="123*abc" ’A’为字符 "A"为字符串 %c为字符格式 %s为字符串格式 (2)空串----不含字符的串/长度为零的串。 PASCA语言: s='' C语言: s=
(3)空格串-仅含空格字符’’的串。 例sl=Φ 2=Φd (4)子串一串s中任意个连续的字符组成的子序列称为串s的子串 主串一包含某个子串的串。 例st="ABC123A123CD" 1=ABC S3=123A S4=ABCA s2="ABC12 S5=ABCE S6=321CBA 2.串变量、字符变量的定义与使用 例1串变量 char st[=abc\*123 gets(st); scanf(%s", st) strcpy(st, data puts(st); printf( st=%s\n", st) 例2字符变量 char ch=a ch='B,; ch=getchar o scanf(%c,&ch); printf( ch=%c\n",ch
(3)空格串-----仅含空格字符’ ’的串。 例 s1='' s2='' s1=' ' s2=' ' (4)子串---串s中任意个连续的字符组成的子序列称为串s的子串。 主串---包含某个子串的串。 例 st="ABC123A123CD" s1="ABC" s3="123A" s4="ABCA" s2="ABC12" s5="ABCE" s6="321CBA" 2.串变量、字符变量的定义与使用 例1 串变量 char st[]="abc\'*123"; gets(st); scanf("%s",st); strcpy(st,"data"); puts(st); printf("st=%s\n",st); 例2 字符变量 char ch='A'; ch=’B’ ; ch=getchar(); scanf("%c",&ch); printf("ch=%c\n",ch);
3.串的基本操作与串函数 (1) strcpy(t,s)--s的串值复制到t中。 执行: strcpy(t,"data");有:t="data" (2) strlen(s)-求s的长度 strlen( data*123)=8 strlen()=0 (3) strcat(s1,s2)-s2的值接到sl1的后面。 设执有 s1="data",s2="123′ 行: strcat(s1,s2); s1="data123″,s2="123 (4) strcmp(s1,s2)-比较s1和s2的大小 若s1<s2,返回负整数如:"ABC"<"abc 若s1=s2,返回0如 如:"abc"=="abc 若s1>s2,返回正整数如:"ABCD">"ABC
3.串的基本操作与串函数 (1)strcpy(t,s)---s的串值复制到t中。 执行:strcpy(t,"data"); 有:t="data" (2)strlen(s)----求s的长度 strlen("data*123")=8 strlen("")=0 (3)strcat(s1,s2)----s2的值接到s1的后面。 设 s1="data" , s2="123" 执行:strcat(s1,s2); 有: s1="data123" , s2="123“ (4)strcmp(s1,s2)---比较s1和s2的大小 若s1<s2,返回负整数 如:"ABC"<"abc" 若s1=s2,返回0如: 如:"abc"=="abc" 若s1>s2,返回正整数 如:"ABCD">"ABC
(5) strstr(s1,s2)—若s2是s1的子串,则指向s2在s1中第1 次出现时的第1个字符的位置,即序号值;否则返回NULL。 i s1="ABE123*DE123bcd s2="E123″ 有 strstr(s1,s2)=3 s1="ABE123DE123″ (6) Replace(s,t,v)-置换 用v代替主串s中出现的所有与t相等的不重叠的子串 i s=abc123abc*abC, t=abc", v=OK 执行: Replace(s,t,V); 有:s="0K1230K*ABC",t=”abC?,v="O爪" ix a="abcaaaaaabC, b="aa, c=aaOK 执行: Replace(A,B,C); A: A=abcaaOKaaOKaABC b="aa",c=aaOK
(5) strstr(s1,s2)----若s2是s1的子串,则指向s2在s1中第1 次出现时的第1个字符的位置,即序号值;否则返回NULL。 设 s1="ABE123*DE123bcd" s2="E123" 有 strstr(s1,s2)=3 s1="ABE123*DE123" ↑ (6)Replace(s,t,v)----置换 用v代替主串s中出现的所有与t相等的不重叠的子串 设 s="abc123abc*ABC", t="abc", v="OK" 执行:Replace(s,t,v); 有: s="OK123OK*ABC", t=”abc”, v="OK" 设 A="abcaaaaaABC", B="aa", C="aaOK" 执行:Replace(A,B,C); 有: A="abcaaOKaaOKaABC", B="aa", C="aaOK