功能:求数组或指针定义的字符串长度
输入:字符串数组或指针
输出:字符串长度(非负整数)
说明:
int _strlen(char *str)
{
int count = 0;
while(*str != '\0')
{
str++;
count++;
}
return count;
} 函数:strrev
功能:字符串反转
输入:字符串数组或指针
输出:无返回值
说明:
char _strrev(char *str)
{
char *head = str;
char *tail = str;
char ptmp;
int len = strlen(str);
while (--len)
{
tail++;
}
while (head < tail)
{
ptmp = *head;
*head = *tail;
*tail = ptmp;
head++;
tail--;
}
}
函数:strcmp
功能:比较两个字符串是否相同
输入:两个字符串数组或指针
输出:相同返回0,不同返回-1
说明:
int _strcmp(const char *str1, const char *str2)
{
int len1 = strlen(str1);
int len2 = strlen(str2);
int count = 0;
if (len1 != len2)
{
return -1;
}
else
{
while (count < len1)
{
if (str1[count] != str2[count])
return -1;
count++;
}
}
return 0;
}
函数:strcpy
功能:把字符串str2的内容拷贝给str1
输入:两个字符串数组或指针
输出:失败返回-1,成功返回0
说明:
int _strcpy(char *str1, char *str2)
{
int s1, s2, count;
char *st1, *st2;
s1 = strlen(str1);
s2 = strlen(str2);
if (s1 < s2)
{
printf("str1 is short, copy failed!\n");
return -1;
}
else
{
st1 = str1;
st2 = str2;
puts("a");
while(*st2 != '\0')
{
*st1 = *st2;
st1++;
st2++;
count++;
}
puts("b");
if (count < s1)
{
*(st1) = '\0';
}
else
printf("str1 is short ,copy failed!\n ");
}
return 0;
}
函数:strcat
功能:把字符串str2的内容拷贝到str1后面
输入:两个字符串数组或指针
输出:
说明:
void strcat(char *restrict s1, const char * restrict s2)
{
char *tmp = s1, *tmp2 =s2;
assert(!s1 || !s2);
s1 = strdespace(s1);
while (*tmp != '\0')
tmp++;
do
{
*tmp++ = *tmp2++;
}while(*tmp2 != '\0');
s1 = strdespace(s1);
}
函数:strdelspace
功能:消除字符串后面的空格
输入:字符串数组或指针
输出:
说明:
void strdelspace(char *str)
{
int count = 0;
while (str[count] != '\0')
{
count++;
}
while (str[count-1] == ' ' )
{
str[count] = '\0';
count--;
}
}