//assert 断言,用于提示一些可能存在的错误,相较于if的作用更加的激烈。
//strcpy:复制
char* Strcpy(char* dest, const char* source){
char* ret = dest;
assert(dest != NULL && source != NULL);
while (*dest++ = *source++){
;
}
return ret;
}
//strcat:拼接
char* Strcat(char* dest, const char* source){
char* ret = dest;
assert(dest != NULL && source != NULL);
while (*dest != '\0'){
*dest++;
}
while (*dest++ = *source++){
;
}
return ret;
}
//strstr:判断一个字符串里是否包含另一个。
char* Strstr(const char* dest, const char* src){
const char* str1 = dest;
const char* str2 = src;
const char* ret = dest;
assert(dest != NULL && src != NULL);
if (*src == '\0'){
return (char*)dest;
}
while (*ret){
str1 = ret;
str2 = src;
}
while (*str1 && *str2 && *str1 == *str2){
str1++;
str2++;
}
if (*str2 == '\0'){
return (char*)ret;
}
return NULL;
}
//strcmp:字符串比较
char* Strcmp(const char* dest, const char* src){
assert(dest != NULL && src != NULL);
while (*dest == *src){
if (*dest == '\0'){
return 0;
}
dest++;
src++;
}
return *dest - *src;
}
//memcpy :内存的拷贝,定义在string.h里。
void* Memcpy(void* dest, void* src, int count){
void* ret= dest;
assert(dest != NULL && src != NULL);
while (count--){
*(char*)dest = *(char*)src;
((char*)dest)++;
((char*)src)++;
}
return ret;
}
//memmove:在一个内存中拷贝,可以理解为memcpy的升级版,解决缓冲区的重叠
void* my_memmove(void* dest,void* src, size_t count){
void* ret = dest;
if (dest <= src || (char*)dest >= ((char*)src + count)) {
while (count--) {
*(char*)dest = *(char*)src;
dest = (char*)dest + 1;
src = (char*)src + 1;
}
}
else {
dest = (char*)dest + count - 1;
src = (char*)src + count - 1;
while (count--) {
*(char*)dest = *(char*)src;
dest = (char*)dest - 1;
src = (char*)src - 1;
}
}
return(ret);
}
//strchr:是查找字符串dest中首次出现src的位置。
char* my_strchr(char* dest, char src){
while (*dest != '\0' && *dest != 'src'){
dest++;
}
return *dest == src ? dest : NULL;
}
07-29
07-29