典型c库函数的实现

时间:2021-01-12 22:20:50

StrToInt:字符串转int输出

 enum Status
{
kValid = ,
kInvalid = ,
}; int StrToInt(const char* str)
{
g_nStatus = kInvalid;
long long num = ; if(str!=NULL && *str != '\0')
{
bool minus = false;
while(*str =="")
str++;
if(*str =='+')
{
str++;
}
else if(*str=='-')
{
str++;
minus = true;
} if(*str !='\0')
{
num = StrToIntCore(str, minus);
}
}
return (int)num;
} int StrToIntCore(const char *digit, bool minus)
{
long long num = ;
while(*digit !='')
{
if(*digit >='' && *digit<='')
{
int flag = minus ? -:;
num =num* + flag*(*digit -''); //判断整数是否发生上溢/下溢
if((!minus && num > 0x7FFFFFFF) //最大正数:2^32-1
|| (minus && num <(signed int)0x80000000))//最小负数:2^32
{
num = ;
break;
}
digit++;
}
else
{
num = ;
break;
}
}
if(*digit=='\0')
{
g_nStatus = kValid;
} return num;
}

char* strcpy(char* srcDest, const char* srcSrc)

 char *strcpy(char* strDest, const char *srcSrc)
{
assert((strDest!=NULL)&&(strSrc!=NULL));  //2分
char *address = strDest;    //2分
while(*srcSrc!='\0')      //2分
{
*strDest = *srcSrc;
strDest++;
strSrc++;
}
return address;  //2分
}
返回char* 的原因:实现链式表达式
1、就是方便一些,否则就要这样写:
 char strDest[12];
 strcpy( strDest, “hello world”);
 int length = strlen(strDest);
什么链式就是一连串写下来的意思。。。
2、strcpy()的参数本来就是指针类型,字符串的首地址。