三、串的基本操作 对于串的基本操作,许多高级语言均提供了相 应的运算或标准库函数来实现。下面仅介绍 几种在C语言中常用的串运算,其它的串操作 见的文件。 定义下列几个变量: char s120=“dirtreeformat'”,s220=“file.mem”; char s330],*p; int result; ( 求串长(length) int strlen(char s);/求串的长度 例如:printfd”,strlen(s1);输出13
三、串的基本操作 对于串的基本操作,许多高级语言均提供了相 应的运算或标准库函数来实现。下面仅介绍 几种在C语言中常用的串运算,其它的串操作 见的文件。 定义下列几个变量: char s1[20]=“dirtreeformat”,s2[20]=“file.mem” ; char s3[30],*p; int result; (1) 求串长(length) int strlen(char s); //求串的长度 例如:printf(“%d”,strlen(s1)); 输出13
(2)串复制(copy) char *strcpy(char to,char from); 该函数将串from复制到串to中,并且返回一个指 向串to的开始处的指针。 例如:strcpy((s3,s1;/s3=“dirtreeformat (3)联接(concatenation) char strcat(char to,char from) 该函数将串rom复制到串to的末尾,并且返回一个 指向串to的开始处的指针。 例如:strcat(s3,”/ strcat(s3,s2);//s3="dirtreeformat/file.mem
(2)串复制(copy) char *strcpy(char to,char from); 该函数将串from复制到串to中,并且返回一个指 向串to的开始处的指针。 例如:strcpy(s3,s1); //s3=“dirtreeformat” (3)联接(concatenation) char strcat(char to,char from) 该函数将串from复制到串to的末尾,并且返回一个 指向串to的开始处的指针。 例如:strcat(s3,”/”) strcat(s3,s2); //s3=“dirtreeformat/file.mem
(④串比较(compare) int strcmp(chars1,char s2); 该函数比较串s1和串2的大小,当返回值小于0,等于0或大 于0时分别表示$1<$2\s1=$2或s1>s2 例如:result=-strcmp(baker'”,"Baker" result>0 result=strcmp(12","12");result=0 result=strcmp("Joe","Joseph");result<0 (5)字符定位ndex) char strchr(char s,char c); 该函数是找©在字符串中第一次出现的位置,若找到侧返回 该位置,否则返回NULL。 例如:p=strchr(s2,”;p指向"fle”之后的位置 if(p)strcpy(p,".cpp");s2="file.cpp
(4)串比较(compare) int strcmp(chars1,char s2); 该函数比较串s1和串s2的大小,当返回值小于0,等于0或大 于0时分别表示s1<s2\s1=s2或s1>s2 例如:result=strcmp(“baker” , ”Baker”) result>0 result=strcmp(“12” , ”12”); result=0 result=strcmp(“Joe” , ”Joseph”); result<0 (5)字符定位(index) char strchr(char s,char c); 该函数是找c在字符串中第一次出现的位置,若找到则返回 该位置,否则返回NULL。 例如:p=strchr(s2,”.”); p 指向“file”之后的位置 if(p) strcpy(p,” .cpp ”); s2=“file.cpp
上述串的操作是最基本的,其中后四个还有变种形式: strncpy,strncat,strncmp。串的其余操作可由这些基本操作 组合而成。 例1、求子串 求子串的过程即为复制字符序列的过程,将串$中的第pos 个字符开始长度为len的字符复制到串T中。 void substr(string sub,string s,int pos,int len) if(pos<0 pos>strlen(s)-1 len<0) error(parameter error") strncpy(sub,&s pos],len);
上述串的操作是最基本的,其中后四个还有变种形式: strncpy,strncat,strncmp。串的其余操作可由这些基本操作 组合而成。 例1、求子串 求子串的过程即为复制字符序列的过程,将串S中的第pos 个字符开始长度为len的字符复制到串T中。 void substr(string sub,string s,int pos,int len) { if(pos<0 || pos>strlen(s)-1 || len<0) error(“ parameter error ”) strncpy(sub,&s[pos],len); }
例2、串的定位index(s,tpos) 在主串中取从第pos个字符起、长度和串T 相等的子串和T比较,若相等,则求得函数值为 pos,否则值增1直至$中不存在和串T相等的子串 为止
例2、串的定位index(s,t,pos) 在主串中取从第pos个字符起、长度和串T 相等的子串和T比较,若相等,则求得函数值为 pos,否则值增1直至S中不存在和串T相等的子串 为止