linux中atoi函数的实现 值得借鉴,【转】atoi()函数的实现
atoi()函數的功能:將字符串轉換成整型數;atoi()會掃描參數nptr字符串,跳過前面的空格字符,直到遇上數字或正負號才開始做轉換,而再遇到非數字或字符串時('\0')才結束轉化,并將結果返回(返回轉換后的整型數)。
atoi()函數實現的代碼:
intmy_atoi(char*?pstr)
{
intRet_Integer?=?0;
intInteger_sign?=?1;
if(pstr?==?NULL)
{
printf("Pointer?is?NULL\n");
return0;
}
while(isspace(*pstr)?==?0)
{
pstr++;
}
if(*pstr?=='-')
{
Integer_sign?=?-1;
}
if(*pstr?=='-'||?*pstr?=='+')
{
pstr++;
}
while(*pstr?>='0'&&?*pstr?<='9')
{
Ret_Integer?=?Ret_Integer?*?10?+?*pstr?-'0';
pstr++;
}
Ret_Integer?=?Integer_sign?*?Ret_Integer;
returnRet_Integer;
}
int my_atoi(char* pstr)
{
int Ret_Integer = 0;
int Integer_sign = 1;
if(pstr == NULL)
{
printf("Pointer is NULL\n");
return 0;
}
while(isspace(*pstr) == 0)
{
pstr++;
}
if(*pstr == '-')
{
Integer_sign = -1;
}
if(*pstr == '-' || *pstr == '+')
{
pstr++;
}
while(*pstr >= '0' && *pstr <= '9')
{
Ret_Integer = Ret_Integer * 10 + *pstr - '0';
pstr++;
}
Ret_Integer = Integer_sign * Ret_Integer;
return Ret_Integer;
}
現在貼出運行my_atoi()的結果,定義的主函數為:int?main?()
intmain()
{
chara[]?="-100";
charb[]?="456";
intc?=?0;
intmy_atoi(char*);
c?=?atoi(a)?+?atoi(b);
printf("atoi(a)=%d\n",atoi(a));
printf("atoi(b)=%d\n",atoi(b));
printf("c?=?%d\n",c);
return0;
}
int main()
{
char a[] = "-100";
char b[] = "456";
int c = 0;
int my_atoi(char*);
c = atoi(a) + atoi(b);
printf("atoi(a)=%d\n",atoi(a));
printf("atoi(b)=%d\n",atoi(b));
printf("c = %d\n",c);
return 0;
}
運行結果:
總結
以上是生活随笔為你收集整理的linux中atoi函数的实现 值得借鉴,【转】atoi()函数的实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux declare大小写,关于l
- 下一篇: linux实验三shell程序设计,实验