注册 登录
编程论坛 C++教室

c语言小白,请教大佬问题

鱼yu子 发布于 2021-10-27 20:40, 3433 次点击
想写一个编码,要求是在输入的数字中加入千分位分隔符并输出。小白真的一头雾水,有没有尽量简便的程序呢,请各位大佬帮忙解答一下,万分感谢!
4 回复
#2
apull2021-10-27 20:51
手头刚好有一个

程序代码:

#include <stdio.h>
#include <string.h>
#define LEN 30

//格式化数字为 12,345,678
char *formatnum(char *strbuf, long num)  
{
    char tmp[LEN] = {0};   
    size_t len, dou;

    sprintf(tmp, "%ld", num);    //把数字转换成字符串

    len = strlen(tmp);
    dou = len + len / 3 - 1;    //字符串加逗号之后的长度

    if (len % 3 == 0)    //原字符串长度刚好是3的倍数,则新字符串长度减一
    {
        dou--;   
    }

    for (size_t i = 1; i <= len; i++, dou--)
    {
        strbuf[dou] = tmp[len - i];    //从后往前遍历

        if (i % 3 == 0 && dou > 0)    //每3个字符添加一个逗号
        {
            strbuf[--dou] = ',';
        }
    }
   
    return strbuf;    //结果保存到strbuf,并返回这个字符串
}

int main() {
    char str[LEN]={0};
    printf("%s\n",formatnum(str,12345678));    //2种使用方法,直接输出
    printf("%s\n",str);    //或者使用字符串变量输出
   
    return 0;
}


[此贴子已经被作者于2021-10-27 21:10编辑过]

#3
鱼yu子2021-10-27 21:01
回复 2楼 apull
感谢大佬!只不过我是真的很初级的小白,不太能看懂,能简单解释一下吗?
#4
apull2021-10-27 21:18
回复 3楼 鱼yu子
加了注释了,你看看,思路很简单
#5
鱼yu子2021-11-01 16:53
太感谢了!
1