您的位置:首页 > 职场人生

一些面试基础知识点(2)

2011-01-06 21:47 330 查看
strcp strlcp memcp的实现,又写了一遍,也不知道是第几遍了。目标串的容量,字符串重叠,宽字符,四字节优化这些东西不考虑了。

char* strcp(char* dest, const char* src) {
assert(dest != NULL);
assert(src != NULL);
if (dest == NULL || src == NULL) return NULL;

char* save = dest;
while((*dest++ = *src++) != '\0') {
}

return save;
}

size_t strlcp(char* dest, const char* src, size_t size) {
assert(dest != NULL);
assert(src != NULL);
if (dest == NULL || src == NULL || size == 0) return 0;

size_t size_ret = 0;
size_t n = size;
while((*dest++ = *src++) != '\0') {
if (0 == --n) break;
size_ret++;
}
dest--;
*dest = '\0';

return size_ret + 1;
}

void* memcpy(void* dest, void* src, size_t n) {
assert(NULL != dest);
assert(NULL != src);
if (NULL == dest || NULL == src || 0 == n) return NULL;

void* ret = dest;
char* dest_temp = (char*) dest;
char* src_temp = (char*) src;
while (n--) {
*dest_temp++ = *src_temp++;
}
return ret;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: