文章类型: VC&C++
关键词: vc++,C函数,atoi,itoa,用法,总结,integer,string,signal,语言
内容摘要: vc++ C函数atoi和itoa的用法总结

vc++ C函数atoi和itoa的用法总结

2017/9/26 17:32:10    来源:apple    阅读:

atoi

  C语言库函数名: atoi

  功 能: 把字符串转换成整型数.

  名字来源:array to integer 的缩写.

  函数说明: atoi()会扫描参数nptr字符串,如果第一个字符不是数字也不是正负号返回零,否则开始做类型转换,之后检测到非数字或结束符 \0 时停止转换,返回整型数。

  原型: int atoi(const char *nptr);

  需要用到的头文件: #include <stdlib.h>

  程序例:

  1)

#include <stdlib.h>
#include <stdio.h>

int main(void)
{
  int n;
  char *str = "12345.67";
  n = atoi(str);
  printf("string = %s integer = %d\n", str, n);
  return 0;
}


执行结果

string = 12345.67 integer = 12345

  2)

#include <stdlib.h>
#include <stdio.h>

int main()
{
  char a[] = "-100" ;
  char b[] = "123" ;
  int c ;
  c = atoi( a ) + atoi( b ) ;
  printf("c = %d\n", c) ;
  return 0;
}

执行结果

c = 23

 简单的实现atoi函数的源代码:

int my_atoi(const char *str)
{
  int result;
  int signal = 1; /* 默认为正数 */
  if((*str>='0'&&*str<='9')||*str=='-'||*str=='+')
  {
      if(*str=='-'||*str=='+')
      {
          if(*str=='-')
            {
              signal = -1; /* 输入负数 */
            }

          str++;
      }
  }
  else
  {
      return 0;
    }

  /* 开始转换 */

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

  return signal*result;
}

itoa

  功 能: 把一整数转换为字符串

  用 法: char *itoa(int value, char *string, int radix);

  头文件: <stdlib.h>

  程序例:

  #include <stdlib.h>
  #include <stdio.h>

  int main()
  {
      int number = 123456;
      char string[25];
      itoa(number, string, 10);
      printf("integer = %d string = %s\n", number, string);
      return 0; 
  }

简单的实现atoi函数的源代码:

<span style="BACKGROUND-COLOR: #33ff33"> /* 实现itoa函数的源代码 */</span>

char *myitoa(int num,char *str,int radix)
{
  /* 索引表 */
  char index[]="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
  unsigned unum; /* 中间变量 */
  int i=0,j,k;
  /* 确定unum的值 */
  if(radix==10&&num<0) /* 十进制负数 */
  {
      unum=(unsigned)-num;
      str[i++]='-';
  }
  else
  {
      unum=(unsigned)num; /* 其他情况 */
  }

  /* 逆序 */

  do
  {
      str[i++]=index[unum%(unsigned)radix];
      unum/=radix;
  }while(unum);

  str[i]='\0';

  /* 转换 */
  if(str[0]=='-')
  {
      k=1; /* 十进制负数 */
  }
  else
  {
      k=0;
    }

  /* 将原来的“/2”改为“/2.0”,保证当num在16~255之间,radix等于16时,也能得到正确结果 */
  for(j=k;j<(i-1)/2.0+k;j++) 
  {
      num=str[j];
      str[j]=str[i-j-1+k];
      str[i-j-1+k]=num;
  }

  return str;
}


↑ 上一篇文章:Android程序出现错误“Field requires API level 5 (current min is 4)”的解决 关键词:Android程序出现错误“Field,requires.. 发布日期:2017/9/22 16:37:31
↓ 下一篇文章:让网站快速提升百度权重的秘密 关键词:网站,快速提升,百度,权重,秘密,原创,更新,人气,流量 发布日期:2017/9/27 15:34:50
相关文章:
VC++ CString类完美总结(整理) 关键词:VC++,,MFC,CString,类,完美,总结,整理 发布日期:2018-09-17 13:58
vc++ string处理大全 关键词:vc++,处理,大全,string,date,float,语言,byte 发布日期:2016-09-22 14:22
(VC++) CString Format的用法 关键词:VC++,CString,Format,用法,windows,MFC,程序,C++ 发布日期:2016-10-24 11:12
相关目录:.NETVC&C++软件开发
我要评论
正在加载评论信息......