逗号分隔数字
程序代码:#include <stdio.h>
// long long 最大值 9223372036854775807 最小值 -9223372036854775808
// 最多只需要用19个字符就能存储C里的有符号最大类型的最大值,用20个字符就能存储有符号最小整数,加上一个'\0'为21个字符。
// -9,223,372,036,854,775,808 转换后最多需要 21 + 6 个字符。
char * convert(char * buf, __int64 num); // 把num以逗号分隔组成的数存放在buf里,然后返回buf。
int main(void)
{
char buf[27];
__int64 num; // Windows 下用 __int64,Linux下用long long
scanf("%I64d", &num);
convert(buf, num);
printf("%s\n", buf);
return 0;
}
char * convert(char * buf, __int64 num)
{
char szTmp[21];
int commas;
int iLen = sprintf(szTmp, "%I64d", num);
int i, j;
if(szTmp[0] == '-' && iLen % 3 == 1 || iLen % 3 == 0)
commas = iLen / 3 - 1;
else
commas = iLen / 3;
for(i = iLen + commas - 4, j = 0; j < commas; i -= 4, j++)
buf[i] = ',';
for(i = iLen + commas - 1, j = iLen - 1; i > -1; i--)
if(buf[i] == ',')
continue;
else
buf[i] = szTmp[j--];
buf[iLen + commas] = '\0';
return buf;
}
大家以后也许会遇到。







