gpt4 book ai didi

c++ - sprintf 串联参数 : sprintf ( a+b, "")

转载 作者:太空宇宙 更新时间:2023-11-04 06:02:16 28 4
gpt4 key购买 nike

将一些代码从 sprintf 移动到 snprintf -偶然发现了这个奇怪的事件:

sprintf(buf+strlen(buf), "ypasZ%c%c", iItem, val);

我不明白那里发生了什么:http://www.cplusplus.com/reference/cstdio/sprintf/没有帮助。第一个参数(写入位置)是否按其大小“增加”?=> 这是否意味着正在写入的位置不是 buf 而是 buf 增加了它的大小?还是将写入 block 的位置预先设置为buf中现有字符串的位置,以便追加文本?

最佳答案

是的,它追加。 sprintf 的第一个参数是它将写入结果的地址(指针)。

如果 buf 是一个 char 数组,编译器(在这种情况下)会将其视为一个指针。添加到它会增加地址。添加长度将指向字符串的当前结尾。

本质上第一个参数是address of string plus length of string that is there,给出字符串结尾的地址,而不是开头,所以 sprintf 命令会正确写入结果到当前字符串的末尾。

关于c++ - sprintf 串联参数 : sprintf ( a+b, ""),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17097186/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com