1.strlen:求字符串长度
#include<stdio.h>
#include<assert.h>
int my_strlen(const char* str)//str不能被改变const
{
assert(str != NULL);//断言str不能为空指针
int count = 0;
while (*str != '\0')//计数str到'\0'的个数
{
count++;
str++;
}
return count;
}
int main()
{
char arr[] = "abcdef";
int len = my_strlen(arr);
printf("%d\n", len);
return 0;
}
2.strcpy:字符串拷贝
#include<stdio.h>
#include<assert.h>
char* my_strcpy(char* dest, const char* src)
{
char* ret = dest;
assert(dest && src);
while (*dest++ = *src++)//讲strc的字符串内容拷贝到dest中
{
;
}
return ret;
}
int main()
{
char arr1[20] = "";
char arr2[] = "hello world";
my_strcpy(arr1, arr2);
printf("%s\n", arr1);
return 0;
}
3.strcat:字符串追加
#include<stdio.h>
#include<assert.h>
char* my_strcat(char* dest, const char* src)
{
assert(dest && src);
char* ret = dest;
//1. 找目标空间的\0
while (*dest)
{
dest++;
}
//2. 追加
while (*dest++ = *src++)
{
;
}
return ret;
}
int main()
{
char arr[20] = "hello ";
char* p = "world";
my_strcat(arr, p);
printf("%s\n", arr);
return 0;
}
4.strcmp:字符串比较大小
#include<stdio.h>
#include<assert.h>
int my_strcmp(const char* str1, const char* str2)
{
assert(str1 && str2);
while (*str1 == *str2)
{
if (*str1 == '\0')
return 0;
str1++;
str2++;
}
if (*str1 > *str2)
return 1;
else
return -1;
}
int main()
{
char arr1[] = "abq";
char arr2[] = "abcdef";
//VS环境下:
//> 1
//= 0
//< -1
int ret = my_strcmp(arr1, arr2);
if (ret>0)
printf("arr1>arr2\n");
printf("%d\n", ret);
return 0;
}
5.strstr:找到所给字符串并返回其指针
#include<stdio.h>
#include<assert.h>
char* my_strstr(const char* str1,const char* str2)
{
assert(str1 && str2);
const char* cp1 = str1;
const char* cp2 = str2;
while (cp1)
{
while (*str1 == *str2)
{
str1++;
str2++;
if (*str2 == '\0')
{
return cp1;
}
}
cp1++;
str1 = cp1;
str2 = cp2;
}
return NULL;
}
int main()
{
char arr1[] = "abbcdef";
char arr2[] = "bc";
char* ret = my_strstr(arr1,arr2);
printf("%s", ret);
return 0;
}