程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> atoi和itoa函數的實現

atoi和itoa函數的實現

編輯:關於C語言

1 itoa的實現

//1234→4321存儲:str=n%radix,n=n/radix)→ 1234
//todo: 把含有 負數的內容寫上去就好了

char * my_itoa2( int num, char *string, int radix )
{
char* str=string;

//得到翻轉的字符串
while(num)
{
*str=num%radix+'0'; //*str=num%radix-'0'; 就是錯誤的了,哈哈。
//cout<<*str<<endl;
num=num/radix;
str++;
}
*str='\0';

char temp;
int len=strlen(str);
for(int i=0;i<len/2;i++)
{
temp=str[i];
str[i]=str[len-1-i];
str[len-1-i]=temp;
}
return string;
}


2 atoi的實現

// num=num*10+*str;
//todo:考慮 過界的情況。

int my_atoi( char *str )
{
if(str==NULL) return 0;
int num=0,flag=1;

if(*str=='-')
{
flag=-1;
}
else
{
num=*str-'0';
}
str++;

//while(*st>='0'&&*str<='9')
while(*str!='\0')
{
num=num*10+*str-'0';
str++;
}

return num*flag;
}



3 測試代碼

int main()
{

char *s="-123567890";
cout<<my_atoi(s)<<endl;

int a=1234;
//*char str[20]={'\0'}; //需要預先定義好的
char *str=new char[20];
str=my_itoa2(a,str,10);
cout<<str<<endl;

return 0;
}


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved