自己写的strlen() strcmp() strcpy() strcat()

  #include <stdio.h>
#define N 80
//函数原型声明
int _strlen (char * pstr1);
char * _strcpy (char * ptarget, char * pstr2 );
char * _strcat (char * pstr3, char *pstr4);
int  _strcmp (char * pstr5, char *pstr6);
//主函数
int main (void)
{
    int Length;
    char  str1[N];
    char  str2[N];
    char  str3[N];
    char * mark1 = NULL;                                //标记量
    char * mark2 = NULL;                                //标记量

    printf ("Please input the string1:\n");
    gets (str1);
    Length = _strlen (str1);
    printf ("The length of the \"%s\" is %d\n", str1, Length);

    mark1 = _strcpy (str2, str1);
    printf ("string 2 is \"%s\"\n", str2);
    printf ("mark1 is \"%s\"\n", mark1);            //利用_strcpy的返回值

    mark2 = _strcat (str1, str2);
    printf ("string 1 is \"%s\"\n", str2);
    printf ("mark2 is \"%s\"\n", mark2);            //利用_strcpy的返回值

    printf ("Please input the string3:\n");
    gets (str3);
    if (_strcmp (str3, str2) == 0)
        printf ("The two strings are the same!");
    else
        printf ("The two strings are not the same!");

    return 0;
}
//函数定义
int _strlen (char * pstr1)
{
    
    int n = 0;

    if (pstr1 == NULL)
        return 0;
    while (*pstr1)                                //若*pstr中为'\0'则退出循环    
    {    
        n++;
        pstr1++;
    }

    return n;
}

char * _strcpy (char * ptarget, char * pstr2 )
{
    char *p = ptarget;

    while (*ptarget++ = *pstr2++);

    return p;
}

char * _strcat (char * pstr3, char * pstr4)
{
    char *p = pstr3;
    
    while (*pstr3)
    {
        pstr3++;
    }                                            //已经到'\0'
    while (*pstr3++ = *pstr4++);

    return p;
}

int  _strcmp (char * pstr5, char * pstr6)
{
    
    while ((*pstr5++ == *pstr6++) && *pstr5);    //这里加一个*pstr5的原因是当2个字符串完全相同了之后

    return *pstr5 - *pstr6;
}

posted @ 2014-06-05 17:57  小辛氏  阅读(366)  评论(0)    收藏  举报