strcpy
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
char* Strcpy(char* dest, const char* src){
assert(dest != NULL); //字符串不为空
char* ret = dest;
while (*dest++ = *src++){ //从源字符串复制到目标空间中
;
}
return ret;
}
int main(){
char dest[20] = "abcde";
const char* src = "hello";
char* ret1 = Strcpy(dest, src);
printf("%s\n", ret1);
char* ret2 = strcpy(dest, src);
printf("%s\n", ret2);
system("pause");
}
strcat
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
char* Strcat(char* dest,const char* src){
assert(dest && src); //字符串不为空
char* ret = dest;
while (*dest){//找到目标空间中的'\0'
dest++;
}
while (*dest++ = *src++){ //从目标空间中的'\0'的位置将源字符串复制到后面的位置
;
}
return ret;
}
int main(){
char dest[20] = "abcde";
const char* src = "hello";
char* ret1=Strcat(dest,src);
printf("%s\n", ret1);
char* ret2 = strcat(dest, src);
printf("%s\n", ret2);
system("pause");
}
strstr
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
char* Strstr(const char* str1, const char* str2){
assert(str1 && str2); //字符串不为空
const char* s1=str1;
const char* s2 = str2;
while (*s1 != '\0'){
while (*s1 == *s2 && *s2 != '\0'){
++s1;
++s2;
}
if (*s2 == '\0'){
return str1;
}
else
{
s2 = str2;
++str1;
s1 = str1;
}
}
return 0;
}
int main(){
char* str1 = "aaaadef";
char* str2 = "aade";
char* ret1 = Strstr(str1, str2);
printf("%s\n", ret1);
char* ret2 = strstr(str1, str2);
printf("%s\n", ret2);
system("pause");
}
strcmp
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
int Strcmp(const char* str1, const char* str2){
assert(str1 && str2); //字符串不为空
int ret = 0;
const char* s1 = str1;
const char* s2 = str2;
while (*s1 && *s2)
{
if (*s1 > *s2)
{
return 1;
}
else if (*s1 < *s2)
{
return -1;
}
else
{
++s1;
++s2;
}
}
// 字符串长度不同的情况
if (*s1 == '\0' && *s2 == '\0')
{
return 0;
}
else if (*s1 == '\0')
{
return -1;
}
else
{
return 1;
}
return ret;
}
int main(){
const char* str1 = "helloa";
const char* str2 = "hello";
int ret1 = Strcmp(str1, str2);
printf("%d\n", ret1);
int ret2 = strcmp(str1, str2);
printf("%d\n", ret2);
system("pause");
return 0;
}