Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Third Party Musl
提交
25501c10
T
Third Party Musl
项目概览
OpenHarmony
/
Third Party Musl
大约 1 年 前同步成功
通知
37
Star
125
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
Third Party Musl
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
25501c10
编写于
3月 21, 2012
作者:
R
Rich Felker
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
initial, very primitive strfmon
上级
30df206c
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
98 addition
and
0 deletion
+98
-0
include/monetary.h
include/monetary.h
+21
-0
src/locale/strfmon.c
src/locale/strfmon.c
+77
-0
未找到文件。
include/monetary.h
0 → 100644
浏览文件 @
25501c10
#ifndef _MONETARY_H
#define _MONETARY_H
#ifdef __cplusplus
extern
"C"
{
#endif
#define __NEED_ssize_t
#define __NEED_size_t
#define __NEED_locale_t
#include <bits/alltypes.h>
ssize_t
strfmon
(
char
*
,
size_t
,
const
char
*
,
...);
ssize_t
strfmon_l
(
char
*
,
size_t
,
locale_t
,
const
char
*
,
...);
#ifdef __cplusplus
}
#endif
#endif
src/locale/strfmon.c
0 → 100644
浏览文件 @
25501c10
#include <stdio.h>
#include <ctype.h>
#include <stdarg.h>
#include <monetary.h>
#include <errno.h>
ssize_t
strfmon
(
char
*
s
,
size_t
n
,
const
char
*
fmt
,
...)
{
size_t
l
;
double
x
;
int
fill
,
nogrp
,
negpar
,
nosym
,
left
,
intl
;
int
lp
,
rp
,
w
,
fw
;
char
*
s0
=
s
;
va_list
ap
;
va_start
(
ap
,
fmt
);
for
(;
n
&&
*
fmt
;
)
{
if
(
*
fmt
!=
'%'
)
{
literal:
*
s
++
=
*
fmt
++
;
n
--
;
continue
;
}
fmt
++
;
if
(
*
fmt
==
'%'
)
goto
literal
;
fill
=
' '
;
nogrp
=
0
;
negpar
=
0
;
nosym
=
0
;
left
=
0
;
for
(;
;
fmt
++
)
{
switch
(
*
fmt
)
{
case
'='
:
fill
=
*++
fmt
;
continue
;
case
'^'
:
nogrp
=
1
;
continue
;
case
'('
:
negpar
=
1
;
case
'+'
:
continue
;
case
'!'
:
nosym
=
1
;
continue
;
case
'-'
:
left
=
1
;
continue
;
}
break
;
}
for
(
fw
=
0
;
isdigit
(
*
fmt
);
fmt
++
)
fw
=
10
*
fw
+
(
*
fmt
-
'0'
);
lp
=
0
;
rp
=
2
;
if
(
*
fmt
==
'#'
)
for
(
lp
=
0
,
fmt
++
;
isdigit
(
*
fmt
);
fmt
++
)
lp
=
10
*
lp
+
(
*
fmt
-
'0'
);
if
(
*
fmt
==
'.'
)
for
(
rp
=
0
,
fmt
++
;
isdigit
(
*
fmt
);
fmt
++
)
rp
=
10
*
rp
+
(
*
fmt
-
'0'
);
intl
=
*
fmt
++
==
'i'
;
w
=
lp
+
1
+
rp
;
if
(
!
left
&&
fw
>
w
)
w
=
fw
;
x
=
va_arg
(
ap
,
double
);
l
=
snprintf
(
s
,
n
,
"%*.*f"
,
w
,
rp
,
x
);
if
(
l
>=
n
)
{
errno
=
E2BIG
;
return
-
1
;
}
s
+=
l
;
n
-=
l
;
}
return
s
-
s0
;
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录