有没有人能给我推荐一个源代码文件或者一个包,里面有一个很好的、可重用的用C语言实现的sprintf(),我可以根据自己的需要进行定制?
解释为什么我需要它:字符串在我的代码中不是null终止的(二进制兼容)。因此,除非我修复代码以理解如何呈现字符串,否则sprintf("%s")是无用的。
感谢quinmars指出,有一种方法可以通过%s打印字符串,而不会以null结尾。虽然它现在已经解决了这个问题,但我最终还是需要为使用变体的高级函数实现sprintf (或snprintf)。到目前为止,在我看来,SQLite的实现是最好的。感谢道格·柯里指出这一点。
发布于 2009-03-04 14:09:31
我还没有试过,因为我这里没有编译器,但阅读手册页,看起来您可以传递‘%s’的精度:
...如果给定了精度,则不需要存在空字符;如果未指定精度,或者该精度大于数组的大小,则数组必须包含终止NUL字符。
那么你有没有尝试过这样做呢?
snprintf(buffer, sizeof(buffer), "%.*s", bstring_len, bstring);正如我所说的,我还没有测试过它,如果它工作了,它当然只有在字符串中没有‘\0’字节时才能工作。
编辑:我现在已经测试过了,它可以工作了!
发布于 2009-03-04 13:28:29
你真的应该寻找snprintf (考虑到输出缓冲区大小的sprintf);谷歌建议使用http://www.ijs.si/software/snprintf/。
发布于 2009-03-04 13:56:22
作为SQLite here的一部分,有一个很好的公共域实现。
我同意Dickon Reed的观点,您需要snprintf,它包含在SQLite版本中。
https://stackoverflow.com/questions/610534
复制相似问题