字符串笔试面试题
1、实现strcpy函数
char *strcpy(char *destination, const char *source) { assert(destination!=NULL&&source!=NULL); char* target = destinaton; while(*destinaton++=*source++); return target ; }
2、实现memcpy函数
void *memcopy(void *dest,const void *src,size_t count) { char *pDest=(char *)(dest); const char *pSrc=(const char *)(src); assert(dest!=NULL&&src!=NULL); //目的地址和源地址重叠,从源地址的末尾方向开始拷贝 if( pDest>pSrc && pDest<pSrc+count ) { pDest = pDest + count-1; pSrc = pSrc + count-1; while(count--){ *pDest-- = *pSrc--; } } //目的地址和源地址不重叠,从源地址的开始方向拷贝 else { while(count--){ *pDest++ = *pSrc++; } } return pDest; }
3、实现strcmp函数
int strcmp(const char *str1, const char *str2) { assert(str1!=0&&str2!=0); while(*str1 == *str2 &&*str1 != '/0') str1++,str2++; if(*str1 > *str2) return 1; else if(*str1 == *str2) return 0; return -1; }
4、实现strcat函数
char *strcat(char *dest, const char *src) { char *tmp = dest; while (*dest) dest++; while ((*dest++ = *src++) != '\0'); return tmp; }