- strstr函数:char strstr(const char src,const char* dest),返回子串dest第一次在src中出现的位置。
1 char* mystrstr(const char* src,const char* des)
2 {
3 assert(src && des);
4 int n=0;
5 if (*des=='\0')
6 {
7 return const_cast<char* >(src);
8 }
9 while (*src!='\0')
10 {
11 for (n=0;*(src+n)==*(des+n);n++)
12 {
13 if (*(des+n+1)=='\0')
14 {
15 return const_cast<char*>(src);
16 }
17 }
18 src++;
19 }
20 return NULL;
21 }
- strcmp函数:int strcmp(const char s1,const char s2),按字典序进行大小判断
s1>s2,返回1
s1=s2,返回0
s1<s2,返回-1
代码:
1 int mystrcmp(const char* s1,const char* s2)
2 {
3 assert(s1&&s2);
4 int ret=0;
5 while (*s1!='\0'&&*s2!='\0')
6 {
7 ret=*s1-*s2;
8 if (ret>0)
9 {
10 return 1;
11 }
12 else if (ret<0)
13 {
14 return -1;
15 }
16 else
17 {
18 s1++;
19 s2++;
20 }
21 }
22 if (*s1=='\0' && *s2=='\0')
23 {
24 return 0;
25 }
26 else if (*s1!='\0' && *s2=='\0')
27 {
28 return 1;
29 }
30 else
31 return -1;
32 }
- strncmp函数:int strncmp(const char s1,const char s2,int n),比较s1和s2的前n个字符
1 int mystrncmp(const char* s1,const char* s2,int n)
2 {
3 assert(s1 && s2 && n>0);
4 int tmp=1;
5 int ret=0;
6 while (*s1!='\0' && *s2!='\0' && tmp<=n)
7 {
8 ret=*s1-*s2;
9 if (ret>0)
10 {
11 return 1;
12 }
13 else if (ret<0)
14 {
15 return -1;
16 }
17 else
18 {
19 s1++;
20 s2++;
21 tmp++;
22 }
23 }
24 if (tmp>n)
25 {
26 return 0;
27 }
28 else
29 {
30 if (*s1=='\0' && *s2=='\0')
31 {
32 return 0;
33 }
34 else if (*s1!='\0' && *s2=='\0')
35 {
36 return 1;
37 }
38 else
39 return -1;
40 }
41 }
- strcpy函数 char strcpy(char dest,const char src),将src中的字符拷贝到dest中,前提是是dest不能是const char 并且要有足够的空间装载src中的字符。
1 char* mystrcpy(char* dest,const char* src)
2 {
3 assert(dest && src);
4 char* tmp=dest;
5 while ((*dest++=*src++)!='\0');
6 return tmp;
7
8 }
如果像下面这样调用是不行的:
char* s1="wer";
char* s2="your"
mystrcpy(s1,s2);
最初想法是将s2内容拷贝到s1中,但是C++默认char* 是常量字符串,即s1是常量不能被改变。正确的使用方法是:
char* s1="I love you!";
char s2[20];
cout<<mystrcpy(s2,s1)<<endl;
或者:
char s1="I love you!";
char s3=new char[strlen(s1)+1];
cout<<mystrcpy(s3,s1)<<endl;
- strncpy函数:char strncpy(char dest,cosnt char* src,int n),拷贝src的前n个字符到dest中,dest必须有足够的内存来存储src的前n个字符。用法和strcpy基本相同,也是不安全的,因为没有检查dest是否有足够的空间。一般的使用方式将n置为dest串的长度,并且保证dest的长度大于src的长度。
原文链接: https://www.cnblogs.com/ZJUKasuosuo/archive/2012/09/17/2688350.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/63069
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!