编程论坛
注册
登录
编程论坛
→
C++教室
c语言小白,请教大佬问题
鱼yu子
发布于 2021-10-27 20:40, 3433 次点击
想写一个编码,要求是在输入的数字中加入千分位分隔符并输出。小白真的一头雾水,有没有尽量简便的程序呢,请各位大佬帮忙解答一下,万分感谢!
4 回复
#2
apull
2021-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
apull
2021-10-27 21:18
回复 3楼 鱼yu子
加了注释了,你看看,思路很简单
#5
鱼yu子
2021-11-01 16:53
太感谢了!
1