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

atoi() 与 itoa()函数的内部实现

2013年12月04日 ⁄ 综合 ⁄ 共 1124字 ⁄ 字号 评论关闭

 C语言提供了几个标准库函数,可以将任意类型(整型、长整型、浮点型等)的数字转换为字符串。以下是用itoa()函数将整数转 换为字符串的一个例子:

       atoi     把字符串转换成整型数
       itoa     把一整数转换为字符串
 

  1. #include "stdio.h"  
  2. #include "ctype.h"  
  3. #include "stdlib.h"  
  4.   
  5. /* 
  6. Converts a character string into an int or long 
  7. 将一个字符串转化为整数 
  8. */  
  9. int my_atoi(char s[])  
  10. {  
  11.     int i,n,sign;  
  12.   
  13.     for(i=0;isspace(s[i]);i++);   //跳过空白  
  14.   
  15.     sign=(s[i]=='-')?-1:1;  
  16.     if(s[i]=='+'||s[i]==' -')     //跳过符号位  
  17.         i++;  
  18.     for(n=0;isdigit(s[i]);i++)  
  19.         n=10*n+(s[i]-'0');        //将数字字符转换成整形数字  
  20.     return sign*n;  
  21. }  
  22.   
  23. /* 
  24. Converts an int or long into a character string 
  25. 将一个整数转化为字符串 
  26. */  
  27. void my_itoa(int n,char s[])  
  28. {  
  29.     int i,j,sign;  
  30.   
  31.     if((sign=n)<0)    //记录符号  
  32.         n=-n;         //使n成为正数  
  33.     i=0;  
  34.     do{  
  35.         s[i++]=n%10+'0';    //取下一个数字  
  36.     }while((n/=10)>0);      //循环相除  
  37.   
  38.     if(sign<0)  
  39.         s[i++]='-';  
  40.     s[i]='\0';  
  41.     for(j=i-1;j>=0;j--)        //生成的数字是逆序的,所以要逆序输出  
  42.         printf("%c",s[j]);  
  43. }  
  44.   
  45.   
  46. void main()  
  47. {  
  48.     int n;  
  49.     char str[100];  
  50.     my_itoa(-123,str);  
  51.     printf("\n");  
  52.     printf("%d\n",my_atoi("123"));  
  53.     system("pause");  
  54. }  

抱歉!评论已关闭.