gpt4 book ai didi

c - 手动递增指针

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

我正在使用 C 的 sprintf 函数写入一个指针。

我向这个指针写入空白字符(空格)、逗号和整数。该指针分配了 4096 个字节。

我在编写时手动增加指针,但是在格式化时遇到问题。

代码如下:

sprintf(result, "%d ", number);
memory += 3;

sprintf(result, "%d, ", number);
memory += 4;

输出: printf("%s", (char *)memory);

根据程序中发生的情况,我执行上述操作之一。最初我分别使用了 2 和 3,但这导致了输出时间距方式的格式问题。我在网上查了一下,发现整数占用 2 个字节的内存,而 char 占用 1 个字节,因此我分别改为 3 和 4。 (空格 (1) + 整数 (2)) = 3 和 (空格 (1) + 逗号 (1) + 整数 (2)) = 4。但是,当我使用这些时,我在输出时丢失了一些数据 - 看起来它缩短它。同样,我已经为指针分配了 4096 个字节,这应该足以正确输出。

也许我错误地增加了我的指针或错误地打印出来?

最佳答案

你在这里做什么并不完全清楚,但我假设你正在尝试根据 sprintf 调用所占用的字符数来调整输出缓冲区中的写入指针。

sprintf 返回实际写入输出缓冲区的字符数,因此不要将指针递增到猜测的字符数,而是使用返回值。

numWritten = sprintf(result, "%d ", number);
memory += numWritten;

我假设内存是一个 char*;如果它是指向其他类型的指针,您也会得到意想不到的结果,因为运算会受到指针指向的内容的影响。

关于c - 手动递增指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21976234/

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