C语言部分函数原型实现
学习、研究库函数的实现,能使你考虑问题更加严谨、全面,培养良好的编程风格和习惯
最近想学习一下C语言库函数的内部实现,于是自己简单地写了几个
贴出以下代码,希望大家能够帮忙指正、优化、完善,
特别是考虑不周和执行效率上给出指导意见
阅读本文前,可以先参考本博客的上一篇文章
C语言函数小集合
调试环境:
VS2008(C)
return flag*sum;
}
void fun_atoi()
{
char str[]=" -123.456def";
printf("/nTest atoi.../n");
printf("%s char to int: %d/n", str, m_atoi(str));
}
/**************************************/
/********** itoa() *********/
/**************************************/
void m_itoa(int n)
{
char *s=NULL;
int i, j, mod, flag=0;
char num[20];
if(n<0)
{
flag=1;
n=-n;
}
i=0;
do
{
mod=n%10;
n=n/10;
num[i++]=mod+'0';
} while (n>0);
if(flag) /* print '-' */
printf("-");
for(j=i-1; j>=0; j--) /* print reverse char */
{
printf("%c", num[j]);
}
}
void fun_itoa()
{
int n=1234;
printf("/nTest itoa.../n");
printf("%d char to int: ", n);
m_itoa(n);
printf("/n");
}
/**************************************/
/********** atof() *********/
/**************************************/
float m_atof(char *str)
{
char *s=str;
if(*s=='/0')
return 0.0;
float sum=0.0;
int flag=1, pow=0;
if(*s=='-')
{
flag=-1;
s++;
}
while(*s!='/0')
{
if(*s=='.') /* dot */
{
pow=1;
s++;
continue;
}
sum=*s-'0'+sum*10;
pow*=10;
s++;
}
return flag*sum/pow;
}
void fun_atof()
{
char str[]="-123.345";
printf("/nTest atof.../n");
printf("%s char to int: %f/n", str, m_atof(str));
}
/**************************************/
/********** ftoa() *********/
/**************************************/
void m_ftoa(float n)
{
char num[20];
int i, j, val, mod, flag, pow;
float dot;
if(n<-1e-6)
{
flag=1;
n=-n;
}
i=0;
val=(int)n; /* integer */
dot=n-val; /* decimal */
do
{
mod=val%10;
val=val/10;
num[i++]=mod+'0';
}while(val>0);
if(dot>1e-6)
{
num[i]='.';
pow=10;
}
do
{
dot=dot*pow;
mod=(int)dot;
num[i++]=mod+'0';
dot=dot-mod; /* error, why, float... help me */
} while (dot>1e-6);
if(flag)
printf("-");
for(j=i-1; j>=0; j--)
printf("%c", num[j]);
}
void fun_ftoa()
{
float n=-1234.5678;
printf("/nTest ftoa.../n");
printf("%d char to int: ", n);
m_ftoa(n);
printf("/n");
}
/**************************************/
/********** main() *********/
/**************************************/
int _tmain(int argc, _TCHAR* argv[])
{
fun_isalnum();
fun_isalpha();
fun_islower();
fun_isupper();
fun_isxdigit();
fun_tolower();
fun_toupper();
fun_atof();
fun_atoi();
fun_itoa();
fun_ftoa();
return 0;
}
运行结果:
原文: C语言部分函数原型实现
版权所有: 本文系米扑博客原创、转载、摘录,或修订后发表,最后更新于 2010-06-24 15:12:42
侵权处理: 本个人博客,不盈利,若侵犯了您的作品权,请联系博主删除,莫恶意,索钱财,感谢!
转载注明: C语言部分函数原型实现 (米扑博客)