C实现字符操作函数,strcpy, strcat, strcmp, memcpy

简介: C实现字符操作函数,strcpy, strcat, strcmp, memcpy

strcpy的实现

1. char *strcpy(char *strDest, const char *strSrc)
2. {
3.     assert((strDest!=NULL) && (strSrc !=NULL));
4.     char *address = strDest;
5.     while( (*strDest++ = * strSrc++) != '\0' ) 
6. NULL;
7. return address;
8. }

strcat的实现

1. char* strcat(char *str1,char *str2)  
2. {
3.  asser((str!=NULL) && (str2!=NULL));
4.  char* tempt = str1;  
5. 
6.  while(*str1++!='\0')   
7. 
8.  while(*str2!='\0')  
9.  {  
10.     *str1++ = *str2++;
11.   }  
12.   *str1 = '\0';  
13. 
14.   return tempt;  
15. }

strcmp的实现

1. int strcmp(const char* str1, const char* str2)  
2. {  
3.  assert((str1 != NULL) && (str2 != NULL);  
4.  int ret = 0;  
5.  while (!(ret = (unsigned char*)*str1 - (unsigned char*)*str2) && (*str2))  
6.  {  
7.    str1++;  
8.    str2++;  
9.  }  
10.   if(ret > 0)  
11.   {  
12.     return 1;  
13.   }  
14.   else if (ret < 0)  
15.   {  
16.     return -1
17.   } 
18. 
19.   return 0;  
20. }

memcpy的实现

1. void* memcpy(void *dest , const void* src , size_t count)    
2. {    
3.     assert( (dest != NULL) && (src != NULL));     //安全检查    
4.     assert(count > 0);
5.     char* psrc = (char *)src;
6.     char* pdest = (char *)dest;
7.     while(count--)    
8.     { 
9. *pdest++ = *psrc++;    
10.     } 
11. return dest; 
12. }

这里的memcpy有两个问题

1.按char类型copy,效率太低,想想是否按指针类型别的方式拷贝(考虑内存对齐的问题)

2.没有考虑dest与src地址有重叠的问题

现在没时间,后面有时间再改进!!!!

相关文章
|
7月前
strlen,strcpy,stract,strcmp,strstr函数的模拟实现
strlen,strcpy,stract,strcmp,strstr函数的模拟实现
65 3
|
7月前
|
C语言
字符串函数`strlen`、`strcpy`、`strcmp`、`strstr`、`strcat`的使用以及模拟实现
字符串函数`strlen`、`strcpy`、`strcmp`、`strstr`、`strcat`的使用以及模拟实现
129 1
|
2月前
解析与模拟常用字符串函数strcpy,strcat,strcmp,strstr(一)
解析与模拟常用字符串函数strcpy,strcat,strcmp,strstr(一)
40 0
|
C语言
自己实现strcpy和strlen函数
自己实现strcpy和strlen函数
91 0
strcpy函数与strncpy函数
strcpy函数与strncpy函数
strlen, strcpy,strcmp,strcat,strncpy,strncmp,strncat,strst库函数的详细解析以及模拟实现
🐰strlen 🐰模拟strlen 🐰strcpy 🐰模拟strcpy 🐰strcat 🐰模拟strcat 🐰strcmp 🐰模拟strcmp 🐰strncpy 🐰strncat 🐰strncmp 🐰strstr 🐰模拟strstr
|
C语言
C语言常用字符串函数strlen、strcpy、strcat、strcmp、strchr
C语言常用字符串函数,求串长strlen(char *s)、串复制strcpy(char *s1,char *s2)、串连接strcat(char *s1,char *s2)、串比较strcmp(char *s1,char *s2)、串定位strchar (s,char c)演示、解析
221 0
C语言常用字符串函数strlen、strcpy、strcat、strcmp、strchr
|
C语言
【C 语言】C 字符串 ( 表示方法 | strcpy | strcat | strlen | strcmp )(二)
【C 语言】C 字符串 ( 表示方法 | strcpy | strcat | strlen | strcmp )(二)
212 0
【C 语言】C 字符串 ( 表示方法 | strcpy | strcat | strlen | strcmp )(二)