编写字符串案例

#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;
}

 

posted @ 2017-09-04 20:51  gd_沐辰  阅读(299)  评论(0编辑  收藏  举报