ep5_8.cpp
上传用户:wxcui2006
上传日期:2022-07-12
资源大小:1274k
文件大小:3k
- /* 5.8 分别编写下列字符串处理函数
- (1)char *strcat1 (char *s,const char *ct);
- 将串ct接到串s的后面,形成一个长串。【例5.2】以数组为参数,现用指针为参数。
- (2)int strlen1(const char * s);
- 求字符串长度的函数,返回串长(不包括串结束符)。
- (3)char * reverse (char *);
- 反置字符串s,即可将"break"成为"kaerb"。
- (4)char * strchr( const char *cs,char c);
- 查找字符c在串cs中第一次出现的位置,返回指向该字符的指针,若没有出现则返回Null。
- (5)char *strstr (const char *cs1,const char *cs2);
- 返回串cs2作为子串在cs1中第一次出现的位置,若没有出现则返回Null。
- */
- #include<iostream>
- using namespace std;
- char* strcat1(char* s,const char* ct){
- char* st=s;
- while(*s) s++;//*S作为条件,等效*S!=0
- while(*s++=*ct++);
- return st;
- }
- int strlen1(const char* s){
- int i=0;
- while(*s++) i++;
- return i;
- }
- char* reverse (char* s){
- char temp,* temp1=s,* temp2=s;
- while(*temp2) temp2++;
- temp2--;//指针移回串尾
- while(temp2-temp1>0){//注意此处,从串两头的指针同时向中间移动,重合或交错时停止
- temp=*temp1;
- *temp1=*temp2;
- *temp2=temp;
- temp1++;
- temp2--;
- }
- return s;
- }
- char* strchr( const char*cs,char c){
- while(*cs!=c&&*cs) cs++;
- if(*cs==0) cs=NULL; //未找到返回NALL
- return (char*)cs;
- }
- char *strstr (const char *cs1,const char *cs2){
- char *temp,*temp1;
- while(*cs1){ //只要主串还有字符未查,则继续
- while(*cs1!=*cs2&&*cs1) cs1++; //与子串第1个字符不符,主串查找位置后移一个字符
- //找到主串含有子串的第一个字符,或主串查完停止
- if(*cs1){ //主串含有子串的第一个字符,核对子串全部字符
- temp=(char*)cs1;
- temp1=(char*)cs2;
- while(*temp==*temp1&&*temp1){temp++;temp1++;};
- if(*temp1==0) return (char*)cs1; //找到子串返回
- else cs1++;//本轮未找到,主串查找位置后移一个字符
- }
- }
- return NULL; //返回NALL
- }
- int main(){
- char a[40]="束明";
- char b[20]="是东南大学学生";
- char c[40]="Southeast University";
- char *cp;
- cout<<a<<endl;
- cout<<b<<endl;
- strcat1(a,b);
- cout<<"字符串连接后:"<<endl;
- cout<<a<<endl;//打印字符数组a
- cout<<"字符串长度为:"<<strlen1(a)<<endl;
- cout<<c<<endl;
- cp=strchr(c,'U');
- if(cp==NULL) cout<<"未找到"<<endl;
- else cout<<cp<<endl;//找到输出由该字符开始的剩余串
- cp=strchr(c,'A');
- if(cp==NULL) cout<<"未找到"<<endl;
- else cout<<cp<<endl;
- cout<<reverse(c)<<endl;
- cp=strstr(a,"是");
- if(cp!=NULL) cout<<cp<<endl;//找到输出由该字符串开始的剩余串
- else cout<<"未找到"<<endl;
- cp=strstr(a,"大学生");
- if(cp==NULL) cout<<"未找到"<<endl;
- else cout<<cp<<endl;
- return 0;
- }
- /*请教师解释为了函数的通用性,有些可不要返回值的函数,也保留返回值*/