int i=strcmp(string 1,string2);
若string1小于string2则返回负值;string1=string2返回0,;string1大于string2返回正值。
具体实现代码如下:
-
#include<iostream>
-
#include<assert.h>
-
using namespace std;
-
-
int strcmp(const char* s,const char* t)
-
{
-
assert(s!=NULL && t!=NULL);
-
while(*s && *t && *s==*t)
-
{
-
++s;
-
++t;
-
}
-
return (*s-*t);
-
}
-
-
-
int main()
-
{
-
int n;
-
char *s="ab ce";
-
char *t="abcd";
-
n=strcmp(s,t);
-
if(n<0)
-
printf("s less than t\n");
-
else if(n==0)
-
printf("s id equal to t\n");
-
else
-
printf("s is bigger than t\n");
-
return 0;
- }
2. char*strcat(dest,src)函数将src所指字符串添加到dest结尾处(覆盖dest结尾处的'\0')并添加'\0'。
实现代码如下:
-
#include<iostream>
-
#include<assert.h>
-
using namespace std;
-
-
char * strcat1(char* s,const char* t)
-
{
-
assert(s!=NULL && t!=NULL);
-
char *address=s;
-
while(*s!='\0')
-
s++;
-
while((*s++=*t++)!='\0') //先赋值,再比较,最后自增
-
NULL;
-
return address;
-
}
-
-
-
int main()
-
{
-
char s[20]="abcd";
-
char *t="xyz";
-
strcat1(s,t);
-
printf("%s",s);
-
return 0;
- }
3.strdup(char*strSrc)函数将串拷贝到新建的位置处,返回值为新分配的空间的地址。在函数内部,要用malloc分配内存,在使用完后要用free()释放空间,否则造成内存泄漏。函数实现代码如下:
-
#include<iostream>
-
#include<assert.h>
-
using namespace std;
-
-
char * strdup1(char* srcStr)
-
{
-
int len=0;
-
char *start=srcStr;
-
if(srcStr!=NULL)
-
{
-
while(*srcStr++!='\0')
-
len++;
-
-
char *address=(char*)malloc(len+1);
-
assert(address!=NULL);
-
-
while((*address++=*start++)!='\0')
-
NULL;
-
return address-(len+1);
-
}
-
return NULL;
-
}
-
-
-
int main()
-
{
-
char *t="abcdefghikgk";
-
char *address=strdup1(t);
-
printf("%s\n",address);
-
free(address);
-
return 0;
- }