itoa和atoi函数

来源:互联网 发布:利基通讯淘宝店可靠吗 编辑:程序博客网 时间:2024/05/19 06:17
itoa
  功 能:把一整数转换为字符串
 
  用 法:char *itoa(int value, char *string, int radix);
 
  详细解释:itoa是英文integer to array(将int整型数转化为一个字符串,并将值保存在数组string中)的缩写.
 
  参数:
 
  value: 待转化的整数。
 
  radix: 是基数的意思,即先将value转化为radix进制的数,范围介于2-36,比如10表示10进制,16表示16进制。
 
  * string: 保存转换后得到的字符串。
 
  返回值:
 
  char * : 指向生成的字符串, 同*string。
 
  备注:该函数的头文件是"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;
 
  }
 
  注释:编译系统:VC++6.0,TC不支持。
 
  我们可以这样构造itoa()
 
  char* itoa(int i)
 
  {
 
  char *a=malloc(42); /* Enough for a 128 bit integer */
 
  if (a) sprintf(a,"%d",i);
 
  return a;
 
  }
 
  实现itoa函数的源代码
 
  char *my_itoa(int num,char *str,int radix){
 
  const char table[]="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
 
  char *ptr = str;
 
  bool negative = false;
 
  if(num == 0){ //num=0
 
  *ptr++='0';
 
  *ptr='/0'; // don`t forget the end of the string is '/0'!!!!!!!!!
 
  return str;
 
  }
 
  if(num<0){ //if num is negative ,the add '-'and change num to positive
 
  *ptr++='-';
 
  num*=-1;
 
  negative = true;
 
  }
 
  while(num){
 
  *ptr++ = table[num%radix];
 
  num/=radix;
 
  }
 
  *ptr = '/0'; //if num is negative ,the add '-'and change num to positive
 
  // in the below, we have to converse the string
 
  char *start =(negative?str+1:str); //now start points the head of the string
 
  ptr--; //now prt points the end of the string
 
  while(start<ptr){
 
  char temp = *start;
 
  *start = *ptr;
 
  *ptr = temp;
 
  start++;
 
  ptr--;
 
  }
 
  return str;
 
  }
 

 

 

 

 

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= 0;
 
  bool signal = false;
 
  if((*str>='0'&&*str<='9')||*str=='-'||*str=='+'){
 
  if(*str=='-'||*str=='+'){
 
  if(*str=='-')
 
  signal = true;
 
  str++;
 
  }
 
  }
 
  else
 
  return 0;
 
  while(*str>='0'&&*str<='9')
 
  result = result*10+(*str++ -'0');
 
  return signal?-result:result;
 
  以上源代码有一个缺点,就是没有检查最大值,因为int的值是有范围的。
 
  另外,c 语言没有bool类型。
 
原创粉丝点击