【发布时间】:2016-03-29 03:31:21
【问题描述】:
我是 C 新手。
我正在寻找一个可以调用函数将int 转换为字符串的示例。我找到了itoa但这不是标准 C 的一部分。
我还找到了sprintf(str, "%d", aInt);,但问题是我不知道所需 str 的大小。因此,我怎样才能为输出字符串传递正确的大小
【问题讨论】:
-
你在使用 gcc 吗?
asprintf是你的朋友。 -
如果
aint是 32 位(有符号或无符号)数量,则 12 个字符(10 位数字,符号,尾随空)就足够了。如果是 64 位有符号数,那么 21 个字符就足够了(19 位,符号,尾随空);对于没有符号的无符号量,21 就足够了,但有符号的则需要 22。通常的技巧是分配比必要的空间稍多的空间。您可以使用空字符串和零长度检查来自snprintf()的返回值,以找到您需要多少空间。您可以按照建议查看asprintf(),但它是相当新的并且仍然具有有限的可移植性。
标签: c