现在的位置: 首页 > 综合 > 正文

自定义实现 strcpy, strncpy 和 atoi

2013年09月26日 ⁄ 综合 ⁄ 共 662字 ⁄ 字号 评论关闭

strcpy, strncpy,要拷贝末尾的0结束符

// 实现strcpy
char* strcpy(char* strDest, char* strSrc)
{
	if (strSrc == NULL || strDest == NULL)
	{
		throw "Invalid argument";
	}

	char* strDestCp = strDest;
	while((*strDest++ = *strSrc++) != '\0');
	return strDestCp;
}

// 功能:复制字符串,复制源中定长的字符串到目标字符串
char* strncpy(char* dest, char* src, size_t n)
{
	if (dest == NULL || src == NULL)
	{
		throw "Invalid argument";
	}

	char* destCp = dest;
	while(n > 0 && (*dest++ = *src++) != '\0')
	{
		n--;
	}
	return destCp;
}

atoi():

// 实现atoi
int atoi(char* str)
{
	if (str == NULL)
	{
		throw "Invalid Input";
	}

	while(*str == ' ' || *str == '	')
	{
		str++;
	}

	// 确定符号位
	int nSign = (*str == '-') ? -1 : 1;
	if(*str == '+' || *str == '-')
	{
		*str++;
	}

	int nResult = 0;
	while(*str >= '0' && *str <= '9')
	{
		nResult = nResult * 10 + (*str - '0');
		*str++;
	}

	return nResult * nSign;
}

 

【上篇】
【下篇】

抱歉!评论已关闭.