コンテンツ
strlen
strcat
strcpy
strcmp
strstr
strlen
strlen |
ヘッダーファイル#include<string.h> |
形式size_tstrlen(const char * str) |
関数文字列の長さを計算します |
戻り値文字列の長さを返します |
//strlen的模拟实现
#include<stdio.h>
#include<assert.h>
size_t my_strlen(const char* str)
{
assert(str); int count = 0;
while (*str != '\0')
{
str++;
count++;
}
return count;
}
strcat
strcat |
ヘッダーファイル#include<string.h> |
フォーマットchar*strcat(char * dest、const char * src) |
関数ターゲット文字列に部分文字列を追加します |
戻り値ターゲット文字列の最初のアドレス |
//strcat模拟实现
#include<stdio.h>
#include<assert.h>
char* my_strcat(char* str1,const char *str2)
{
assert(str1, str2);
char* tmp = str1;
//找出str1中的斜杠零
while (*str1)
{
str1++;
}
//在str1上追加
while (*str1++=*str2++)
{
;
}
return tmp;
}
int main()
{
char arr1[20] = "hello";
char arr2[] = " world";
printf("%s",my_strcat(arr1,arr2));
return 0;
}
strcpy
strcpy |
ヘッダーファイル#include<string.h> |
格式char*strcpy(char * dest、char * src) |
機能パラメータsrc文字列をパラメータdestが指すアドレスにコピーします |
戻り値ターゲット文字列の最初のアドレス |
//模拟实现strcpy
#include<stdio.h>
#include<assert.h>
char* my_strcpy(char *str2,char *str1)
{
assert(str1, str2);
char* tmp = str2;
while (*str1)
{
*str2++ = *str1++;
}
return tmp;
}
int main()
{
char arr1[20] = "abcdef";
char arr2[20] = "xxxxxxxxxxxxx";
my_strcpy(arr2,arr1);
printf("%s", arr2);
return 0;
}
strcmp
strcmp |
ヘッダーファイル#include<string.h> |
フォーマットintstrcmp(const char * str1、const char * str2) |
機能2つの文字列のサイズを比較します |
戻り値str1>str2戻り値>0 str1<str2戻り値<0 str1=str2戻り値=0 |
//strcmp模拟实现
#include<stdio.h>
#include<assert.h>
int strcmp(const char* str1,const char* str2)
{
assert(str1, str2);
while (*str1 == *str2)
{
str1++;
str2++;
}
return *str1 - *str2;
}
int main()
{
char arr1[] = "abc";
char arr2[] = "abcd";
printf("%d", strcmp(arr1, arr2));
return 0;
}
strstr
strstr |
ヘッダーファイル#include<string.h> |
格式char*my_strstr(const char * str、const char * substr) |
機能ターゲット文字列内の部分文字列を検索 |
戻り値ターゲット文字列で、サブ文字列と同じ文字列の最初のアドレス |
#include<stdio.h>
#include<assert.h>
char* my_strstr(const char*str,const char* substr)
{
char* s1 = str;//防止str被破坏
char* s2 = substr;//防止substr被败坏
char* cur = str;//存储中间地址
assert(str && substr);
//排除substr为空
if (substr == '\0')
{
return str;
}
while (*cur)
{
s1 = cur;
s2 = substr;
while (*s1 && *s2 && *s1 == *s2)
{
s1++;
s2++;
}
if (*s2 == '\0')
return cur;
cur++;
}
return NULL;
}
int main()//模拟实现strstr函数
{
char arr1[] = "abbbcdef";
char arr2[] = "bbc";
printf("%s", my_strstr(arr1, arr2));
return 0;
}