atoi和itoa的实现

来源:互联网 发布:u盘推荐知乎 编辑:程序博客网 时间:2024/06/02 09:27
#include <stdio.h>int str2num(const char *s){        int i;    char c;        for (i = 0; '0' <= (c = *s) && c <= '9'; ++s)        i = i*10 + c - '0';    return i;}double str2double(const char *s){int iValue = 0;double dValue = 0.0;//bool bDot = false;char c;for ( ; '0' <= (c = *s) && c <= '9' ; ++s){    iValue = iValue * 10 + c - '0';    }        if( c && '.' == c){    int base = 1;    const char *tmp = ++ s;    while( *tmp++ != '/0' ) base = base * 10;      for ( ; '0' <= (c = *s) && c <= '9' ; ++s){        dValue = dValue * 10 + c - '0';        }                dValue = dValue / base;            }        return iValue + dValue;}char * int2str(long n, int base, char *buf, int length){char *p = buf ;int minus;p = &buf[length];*--p = '/0';if (n < 0) {minus = 1;n = -n;}elseminus = 0;if (n == 0)*--p = '0';elsewhile (n > 0) {*--p = "0123456789abcdef"[n % base];n /= base;}if (minus)*--p = '-';return p;}int main(){    char *str = "75979";    char *dStr = "75979.534";    printf("%s, %d/n", str, str2num( str ) );    printf("%s, %.3f/n", dStr, str2double( dStr ) );        int iInt = -12345;    char cStr[10];    printf("%d, %s/n", iInt, int2str( iInt, 10, cStr, 10) );}
原创粉丝点击