Open guanpengchn opened 5 years ago
#include <assert.h> #include <stdio.h> // 字符串拷贝strcpy char* strcpy(char* des, const char* src){ assert((NULL!=des)&&(NULL!=src)); char * res = des; while((*des++=*src++)!='\0'); return res; } // 字符串长度strlen int strlen(const char* src){ assert((NULL!=src)); int res=0; while((*src++)!='\0'){ ++res; } return res; } // 字符串链接strcat char* strcat(char* des, const char* src){ assert((NULL!=des) && (NULL!=src)); char* res = des; while(*des!='\0') ++des; while(*des++=*src++); return res; } // 字符串比较strcmp int strcmp(const char* s1, const char* s2){ assert((NULL!=des) && (NULL!=src)); while(*s1 == *s2){ if(*s1 == '\0') return 0; ++s1; ++s2; } return *s1-*s2; } //将指针一个范围变为一个数 void* memset(void* src, int c, unsigned int n){ assert(NULL!=src); void* res = src; while(n--){ *(char*)src = c; (char*)src ++; } return res; } //将指针一个范围拷贝另一个指针的数 void* memcpy(void* dest,void* src, unsigned int n){ assert(NULL != dest && NULL != src); void* res=dest; while(n--){ *(char*)dest = *(char*)src; (char*)dest++; (char*)src++; } return res; }
有关于while((*des++=*src++)!='\0');的理解,等同于
while((*des++=*src++)!='\0');
while( des' = des, src' = src, *des' = *src', *des' != '\0' ){ des = des' + 1; src = src' + 1; }
有关于
while((*des++=*src++)!='\0');
的理解,等同于