【C深度剖析】自實現 strcmp strlen strcpy strcat

int str_cmp(const char *s1,const char *s2)
{
	int ret;
	while(!(ret = *(unsigned char *)s1 - *(unsigned char *)s2) && s2++)
	  s1++,s2++;
	if(ret > 0)
		ret = 1;
	else if(ret <0)
	  ret = -1;
	
	return ret;
}

int str_len(const char *s)
{
	assert(s != 0);
	char *start = s;
	while(*s++);
	return (s - start - 1);
}

char* str_cpy(char *dest,char *src)
{
	assert( (dest != 0) && (src != 0));
	char* ret = dest;
	while(*src)
	  *dest++ = *src++;
	*dest = '\0';
	return ret;
}

char* str_cat(char *dest,char *src)
{
	assert((dest != 0) && (src != 0));
	char *ret = dest;
	while(*dest)
	  dest++;
	while(*src)
	  *dest++ = *src++;
	*dest = '\0';
	return ret;
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章