自己写的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;
}

浙公网安备 33010602011771号