| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3189 人关注过本帖
标题:c语言小白,请教大佬问题
只看楼主 加入收藏
鱼yu子
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2021-10-27
结帖率:33.33%
收藏
已结贴  问题点数:20 回复次数:4 
c语言小白,请教大佬问题
想写一个编码,要求是在输入的数字中加入千分位分隔符并输出。小白真的一头雾水,有没有尽量简便的程序呢,请各位大佬帮忙解答一下,万分感谢!
搜索更多相关主题的帖子: 千分位 数字 输出 c语言 输入 
2021-10-27 20:40
apull
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:三体星系
等 级:版主
威 望:216
帖 子:1479
专家分:9055
注 册:2010-3-16
收藏
得分:20 
手头刚好有一个

程序代码:
#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编辑过]

2021-10-27 20:51
鱼yu子
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2021-10-27
收藏
得分:0 
回复 2楼 apull
感谢大佬!只不过我是真的很初级的小白,不太能看懂,能简单解释一下吗?
2021-10-27 21:01
apull
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:三体星系
等 级:版主
威 望:216
帖 子:1479
专家分:9055
注 册:2010-3-16
收藏
得分:0 
回复 3楼 鱼yu子
加了注释了,你看看,思路很简单
2021-10-27 21:18
鱼yu子
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2021-10-27
收藏
得分:0 
太感谢了!
2021-11-01 16:53
快速回复:c语言小白,请教大佬问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015712 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved