逗号分隔数字
程序代码:
#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; }
大家以后也许会遇到。