#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
}
网友评论