c – 更好的冲刺?

发布时间:2019-09-29 发布网站:脚本之家
脚本之家收集整理的这篇文章主要介绍了c – 更好的冲刺?脚本之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我对C很新.最近我一直致力于通过套接字,MQSeries和其他途径从一堆其他系统获取输入的系统.基本上我的工作是将这些不同的源集合在一起,并将它们放入一种类似于本地的XML格式,并将它们存储在适当的数据库中,或者将它们传递给其他系统.因此,我一直在创建格式化字符串.非常简化他们看起来像这样:

"

所以我开始使用sprintf和vsprintf,并且很容易编写一个例程来连接sprintf的格式字符串,但问题是我没有关于我收到的字符串长度的高级知识所以很难知道它的大小要分配的缓冲区.我得到的字符串可以是25个字节长或250k字节.不说.所以我当然要过一次或两次缓冲.这导致我使用snprintf,这是好的,但只是将负载传递给我,以便在它们被截断时重新分配缓冲区并再次尝试.

所以我知道这不是宇宙中最大的问题,我可以自己加总长度,但有没有办法让它在C中更容易一些,或者我应该停止抱怨并找出某种递归函数来添加提前完成所有字符串长度?

最佳答案
就像许多事情一样,有人在你发牢骚之前然后划伤了痒. asprintf and vasprintf来救援.他们并没有比sprintf做更多的事情,但他们确实做了困扰你的事情,即弄清楚需要多少空间然后分配它,格式化字符串,并将其传递给你.

几点需要注意:

>如果出现问题,他们将返回-1,如果没有则返回字符串的长度
>完成后,您需要记住释放字符串.
>它们不属于C或POSIX,因此您的平台可能没有它们.
>由于您使用的是Linux,因此可以使用它,但您需要定义_GNU_SOURCE功能宏

一个半荒谬的例子:

#define _GNU_SOURCE
#include 

总结

以上是脚本之家为你收集整理的c – 更好的冲刺?全部内容,希望文章能够帮你解决c – 更好的冲刺?所遇到的程序开发问题。

如果觉得脚本之家网站内容还不错,欢迎将脚本之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:76874919,请注明来意。

快乐,其实很简单!比如有我~

关注我升职加薪

标签:c