首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用sprintf追加字符串?

如何使用sprintf追加字符串?
EN

Stack Overflow用户
提问于 2010-04-20 18:36:56
回答 14查看 176.3K关注 0票数 81

我正面临着一个关于sprintf的严重问题。

假设我的代码片段是:

代码语言:javascript
复制
sprintf(Buffer,"Hello World");
sprintf(Buffer,"Good Morning");
sprintf(Buffer,"Good Afternoon");
.
.
.

上百次冲刺...

如果我喜欢这样,它就会被覆盖。

如何避免使用sprintf覆盖?如果我在最后给出一个printf,我想看到所有的行。

EN

回答 14

Stack Overflow用户

回答已采纳

发布于 2010-04-20 18:39:42

您需要:

代码语言:javascript
复制
sprintf(Buffer,"Hello World");
sprintf(Buffer + strlen(Buffer),"Good Morning");
sprintf(Buffer + strlen(Buffer),"Good Afternoon");

当然,你需要你的缓冲区足够大。

票数 129
EN

Stack Overflow用户

发布于 2010-04-20 18:41:57

代码语言:javascript
复制
int length = 0;
length += sprintf(Buffer+length, "Hello World");
length += sprintf(Buffer+length, "Good Morning");
length += sprintf(Buffer+length, "Good Afternoon");

这是一个对错误有一定抵抗力的版本。如果你不关心什么时候发生错误,这是很有用的,只要你能在错误发生的时候继续你的快乐之路。

代码语言:javascript
复制
int bytes_added( int result_of_sprintf )
{
    return (result_of_sprintf > 0) ? result_of_sprintf : 0;
}

int length = 0;
length += bytes_added(sprintf(Buffer+length, "Hello World"));
length += bytes_added(sprintf(Buffer+length, "Good Morning"));
length += bytes_added(sprintf(Buffer+length, "Good Afternoon"));
票数 74
EN

Stack Overflow用户

发布于 2010-04-21 01:10:09

snprintf()snprintfcat()包装器

代码语言:javascript
复制
size_t 
snprintfcat(
    char* buf,
    size_t bufSize,
    char const* fmt,
    ...)
{
    size_t result;
    va_list args;
    size_t len = strnlen( buf, bufSize);

    va_start( args, fmt);
    result = vsnprintf( buf + len, bufSize - len, fmt, args);
    va_end( args);

    return result + len;
}
票数 17
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2674312

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档