C语言数字用逗号分隔
正负整数从后向前每3个数字加逗号“,”分隔。
#include <stdio.h>
#include <string.h>
#define LEN 30
//格式化数字为 12,345,678
char *formatnum(char *strbuf, long num)
{
char tmp[LEN] = {0};
char *p = strbuf;
size_t len, index = 0;
sprintf(tmp, "%ld", num); //把数字转换成字符串
len = strlen(tmp);
if ((num >= 0 && len <= 3) || (num < 0 && len <= 4)) //小于3位直接返回
{
strcpy(strbuf, tmp);
return strbuf;
}
if (num < 0) //处理负数
{
*p = '-';
p++;
index = 1;
}
for (; index <= len; index++)
{
*(p++) = tmp[index];
if ((len - index + 2) % 3 == 0 && len - index > 3) //每3个字符添加一个逗号
{
*(p++) = ',';
}
}
return strbuf; //结果保存到strbuf,并返回这个字符串
}
int main()
{
long num;
while (1)
{
char str[LEN] = {0};
scanf("%ld", &num);
if (num == 0)
break;
printf("%s\n", formatnum(str, num)); //2种使用方法,直接输出
printf("%s\n", str); //或者使用字符串变量输出
}
return 0;
}
