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