#include "stdio.h" #include "conio.h" #include <ctype.h> #include <stdlib.h> typedef long long __int64; //64位 需要设备支持64 否则结果是不对的 /**************************************/ long atol(const char *nptr) { int c; /* current char */ long total; /* current total */ int sign; /* if ''-'', then negative, otherwise positive */ /* skip whitespace */ while ( isspace((int)(unsigned char)*nptr) ) ++nptr; c = (int)(unsigned char)*nptr++; sign = c; /* save sign indication */ if (c == '-' || c == '+') c = (int)(unsigned char)*nptr++; /* skip sign */ total = 0; while (isdigit(c)) { total = 10 * total + (c - '0'); /* accumulate digit */ c = (int)(unsigned char)*nptr++; /* get next char */ } if (sign == '-') return -total; else return total; /* return result, negated if necessary */ } int atoi(const char *nptr) { return (int)atol(nptr); } #ifndef _NO_INT64 __int64 _atoi64(const char *nptr) { int c; /* current char */ __int64 total; /* current total */ int sign; /* if ''-'', then negative, otherwise positive */ /* skip whitespace */ while ( isspace((int)(unsigned char)*nptr) ) ++nptr; c = (int)(unsigned char)*nptr++; sign = c; /* save sign indication */ if (c == '-' || c == '+') c = (int)(unsigned char)*nptr++; /* skip sign */ total = 0; while (isdigit(c)) { total = 10 * total + (c - '0'); /* accumulate digit */ c = (int)(unsigned char)*nptr++; /* get next char */ } if (sign == '-') return -total; else return total; /* return result, negated if necessary */ } #endif /* _NO_INT64 */ char* _itoa(int value, char* string, int radix) { char tmp[33]; char* tp = tmp; int i; unsigned v; int sign; char* sp; if (radix > 36 || radix <= 1) { return 0; } sign = (radix == 10 && value < 0); if (sign) v = -value; else v = (unsigned)value; while (v || tp == tmp) { i = v % radix; v = v / radix; if (i < 10) *tp++ = i+'0'; else *tp++ = i + 'a' - 10; } if (string == 0) string = (char*)malloc((tp-tmp)+sign+1); sp = string; if (sign) *sp++ = '-'; while (tp > tmp) *sp++ = *--tp; *sp = 0; return string; } char* _ltoa(long value, char* string, int radix) { char tmp[33]; char* tp = tmp; long i; long v; int sign; char* sp; if (radix > 36 || radix <= 1) { return 0; } sign = (radix == 10 && value < 0); if (sign) v = -value; else v = (unsigned long)value; while (v || tp == tmp) { i = v % radix; v = v / radix; if (i < 10) *tp++ = i+'0'; else *tp++ = i + 'a' - 10; } if (string == 0) string = (char*)malloc((tp-tmp)+sign+1); sp = string; if (sign) *sp++ = '-'; while (tp > tmp) *sp++ = *--tp; *sp = 0; return string; }
相关推荐
用C实现atoi,字符转整型。。。。。。
itoa函数及atoi函数的区别,C++,MFC
本文介绍了,atoi和itoa函数的实现方法,需要的朋友可以参考一下
字符串和整形互相转换函数atoi,itoa函数原型认识两个函数以及用法
atoi函数,自己实现的。通过输入字符串,实现数字。如果是字母,则转换为相关的对应的数值。
学习自己实现数值转字符itoa函数、字符串转数值atoi函数和求字符串长度strlen函数
字符串和整形互相转换函数atoi,itoa函数原型 认识两个函数以及用法
atoi函数的实现 用C语言写的 很简单的 大家可以参考下
自己实现了atoi函数,有2个版本的实现,卸载txt里面,见谅
atoi函数的源代码,使你更加的了解atoi函数的功能。
C语言常用函数源码 strcmp strlen atoi atol memcpy strchr strstr printf等,不可不看.公司面试的时候很容易让写出其中某些函数的源码.这些函数的源码确实简洁,高效
本篇文章是对atoi()与itoa()函数的用法进行了详细的分析介绍,需要的朋友参考下
本篇文章是对atoi()与itoa()函数的内部实现方法进行了详细的分析介绍,需要的朋友参考下
atoi,atol,strtod,strtol,strtoul实现类型转换.doc
这个文档是c中数字转换函数atoi函数原型的代码
主要介绍了C语言模拟实现atoi函数的实例详解的相关资料,atoi函数,主要功能是将一个字符串转变为整数,这里就实现这样的函数,需要的朋友可以参考下
自己写的一个字符串转整型的函数,实现了atoi()功能。
自己用C语言编写的atoi函数,欢迎下载。