#include <stdio.h>
#include <string.h>
//1.求取字符串长度 "123456" 面试题
int Strlen(char* pstr)
{
int len=0;//用户统计字符串的长度
while(*pstr!='\0')//如果字符不是字符串结束标志符\0时,就一直循环
{
++len;//统计长度++
++pstr;//地址++
}
return len;
}//strlen();
//2.字符串连接:把字符串2中的内容放到字符串1的后面 面试题
char* Strcat(char* str1,char* str2)
{
int len=Strlen(str1);//获取字符串1的长度
char* pch=str1+len;//将指针指向字符串1的末尾处
while(*str2!='\0')
{
*pch++=*str2++;
}
*pch='\0';
return str1;
}//strcat()
//3.字符串拷贝 面试题出最多
char* Strcpy(char* str1,char* str2)
{
char* pch=str1;//指针保存目标字符串的首地址
while(*str2)
{
*pch++=*str2++;//面试题5-10分
}
*pch='\0';
return str1;
}//strcpy()
//4.字符串比较
int Strcmp(char* str1,char* str2,int n)
{
int len=0;//保存前面有多少个字符已经比较过了
while(*str1&&*str2)
{
if(*str1>*str2)
return 1;
else if(*str1<*str2)
return -1;
//将两个指针自增,指向下一个字符(前面的字符都相等时)
++str1;//abc
++str2;//abcefg
if(++len==n)//相等的字符的个数如果和n相等,就不必再比较,直接返回0
return 0;
}
if(*str1)//如果字符串1还没到末尾,就说明字串符1比较大,返回1
return 1;
else
return -1;
}
int main()
{
char str[]="abc";
char str1[]="abc";
printf("字符串长度为%d\n",Strlen(str));
printf("字符串长度为%d\n",strlen(str));
//printf("字符串连接后:%s\n",Strcat(str,str1));
//printf("字符串连接后:%s\n",strcat(str,str1));
//printf("字符串拷贝后:%s\n",Strcpy(str,str1));
//printf("字符串拷贝后:%s\n",strcpy(str,str1));
printf("字符串比较后:%d\n",Strcmp(str,str1,3));
return 0;
}