美文网首页
字符串与数字互相转换算法(转)

字符串与数字互相转换算法(转)

作者: 介和 | 来源:发表于2018-12-23 19:33 被阅读5次

    #include <stdio.h>

    void toString(int number, char *str);

    void toInt(char *str, int *number);

    void main()

    {

        char str1[20],str2[20];

        int number;

        toString(123,str1);

        toString(-123,str2);

        toInt("500",&number);

        printf("%s\n",str1);

        printf("%s\n",str2);

        printf("%d\n",number);

        getchar();

    }

    void  toString(int number,char *str)       //数字转字符串算法实现

    {

        int isNegative = 0;//默认为非负数

        int i,j;

        char temp;

        isNegative = number < 0 ? (number*=-1,1) :0;    //判断是否为负数,巧用逗号表达式,可以省一行(哈哈)

        for (i = 0; number != 0; i++)//反向逐一取得字符,最后反转

        {

            str[i] = (char)(number % 10+48);

            number /= 10;

        }

        if (isNegative)//负数处理

        {

            str[i++] = '-';

            str[i--] = 0;

        }

        else//正数处理

            str[i--] = 0;//i++,可以使得i正好等于字符个数,又省了三行(低调)

        for (j = 0; j <= i / 2; j++)//字符数组反转,3个字符换两次,4个换两次,奇偶通用(数组反转算法)

        {

            temp = str[j];

            str[j] = str[i - j];

            str[i - j] = temp;

        }

    }

    void toInt(char *str,int *number)     //字符串转数字算法实现

    {

        int i;

        *number = 0;                        //强制初始化

        for (i = 0; str[i] != 0; i++)

            *number = (int)(str[i] - 48) + *number * 10;     //逐一取字符转换为数字,并升权放入number

    }

    相关文章

      网友评论

          本文标题:字符串与数字互相转换算法(转)

          本文链接:https://www.haomeiwen.com/subject/doankqtx.html