Jam*_*ieH 2 c formatting string-formatting
考虑到关于C 的更安全的格式化库的问题的答案,我想知道是否有一个安全的 C格式化库?
我的意思是:
请不要回答有关Microsoft安全字符串库或不太安全但仍然不完全安全的库,因为我知道这些,并且它们不满足总安全性的要求.
提前致谢
格式字符串不可能与参数不匹配
如果你想要一个格式字符串,没有特殊的编译器支持你基本上不能这样做.也就是说,如果你放弃格式字符串,你可以在C中有一个安全的格式库.我不知道,但如果他们存在,我不会感到惊讶.
可以有一个界面,如:
typedef ... FORMATTER;
FORMATTER create_formatter();
int fmt_add_string_default(FORMATTER f, const char *s);
int fmt_add_string(FORMATTER f, const char *s, int maxlength, const char fill, enum fmt_alignment align);
...
int fmt_add_decimal_default(FORMATTER f, int d);
... // you get the idea
int fmt_write_result(FORMATTER f, char *out, int out_length);
void destroy_formatter(FORMATTER f);
Run Code Online (Sandbox Code Playgroud)
如果有点冗长,这样的东西将是非常安全的.