strcpy函數實作
strcpy :字元串拷貝函數, 函數原型 char* strcpy(char* dest,char* src) 從stc的起始位址開始,到'\0'結束。 是以dest必須有足夠的空間來容納src。頭檔案#include<string.h>
char* my_strcpy(char* dest, const char* src)
{
assert(dest);
assert(src);
char* ret = dest;
while ((*dest++) = (*src++))
{
;
}
return ret;
}
測試部分
int main()
{
char arr[20];
char* str= "hello ";
char* ret = my_strcpy(arr, str);
printf("%s\n", ret);
system("pause");
return 0;
}
strcat函數實作
strcat :字元串連接配接函數 ,把src指向的字元串添加到dest後,(src直接覆寫dest結尾處的‘\0’) 原型 char* strcat(char *dest,const char* src); 頭檔案#include<string> 注意事項: dest和src倆塊空間不能有重疊部分,dest必須有足夠大的空間來容納srt,傳回dest的指針
char* my_strcat(char* dest, const char* src)
{
char* ret = dest;
assert(dest);
assert(src);
while (*dest)
{
*dest++;
}
while (*dest++ = *src++)
{
;
}
return ret;
}
測試部分
int main()
{
char arr1[20] = "hello";
char arr2[] = "sust";
char* ret = my_strcat(arr1, arr2);
printf("%s\n", ret);
system("pause");
return 0;
}
arr1 的空間一定要足夠大
strcmp函數實作
strcmp:字元串比較函數,倆個字元串自左向右逐個字元比較(按ASCIIZ值的大小比較)直到出現不同的字元或者‘\0’。若這倆個字元串為str1,str2, 若str1==str2,傳回0; 若str1>str2 ,傳回正數; 若str1<str2,傳回負數;
int my_strcmp(const char* dest,const char* src)
{
int ret = 0;
while (*dest == *src)
{
if (*dest == '\0')
{
return 0;
}
*dest++;
*src++;
}
return *dest - *src;
}
測試
int main()
{
char arr1[10] = "sust";
char arr2[10] = "sust";
int ret = my_strcmp(arr1, arr2);
printf("%d\n", ret);
system("pause");
return 0;
}
strstr函數實作
strstr:在字元串中找子串 char* strstr(char* str1,char * str2) 在str1中找str2,如果找到了傳回strp2在str1中首次出現的位址,如果沒找到傳回NULL。
char* my_strstr(const char* str1, const char* str2)
{
char *cp = (char*)str1;
char *substr = (char*)str2;
char *s1 = str1;
assert(str1);
assert(str2);
if (*str2 == '\0')
return NULL;
while (*cp)
{
s1 = cp;
substr = str2;
while (*s1&&*substr && (*s1 == *substr))
{
s1++;
substr++;
}
if (*substr == '\0')
return cp;
cp++;
}
}
strlen函數實作
strlen:求字元串長度函數,從開始直到遇到'\0'結束,傳回計數器的值不包含‘\0 ’;
法一:
int my_strlen(const char *str)
{
int count = 0;
while (*str)
{
count++;
str++;
}
return count;
}
法二:遞歸法
int my_strlen(const char *str)
{
if (*str=='\0')
return 0;
else
return 1 + my_strlen(str + 1);
}
測試
int main()
{
char arr[10] = "hello";
int ret = my_strlen(arr);
printf("%d\n", ret);
system("pause");
return 0;
}