【发布时间】:2013-06-13 21:12:51
【问题描述】:
将一些代码从 sprintf 移动到 snprintf - 偶然发现了这种奇怪的现象:
sprintf(buf+strlen(buf), "ypasZ%c%c", iItem, val);
我不明白那里发生了什么:http://www.cplusplus.com/reference/cstdio/sprintf/ 没有帮助。 第一个参数(写入位置)是否按其大小“增加”? => 这是否意味着正在写入的位置不是 buf 而是 buf 按其大小递增? 还是将写入块的位置预先设置为buf中现有字符串的位置,以便追加文本?
【问题讨论】:
-
你添加了那些
**字符吗?我把它们拿出来了,因为它们(大概)不是代码的一部分。 -
考虑
strcpy(buf+strlen(buf), "foo");这是一个穷人的追加...如果使用多个打印语句构建可能会很方便。