字符串與數字互相轉換算法


自己看代碼

#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
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM