C 手动递增指针

C 手动递增指针,c,pointers,memory-management,increment,C,Pointers,Memory Management,Increment,我正在使用C的sprintf函数向指针写入数据 我将空白字符(空格)、逗号和整数写入该指针。指针的分配为4096字节 我在编写时手动递增指针,但在格式化时遇到问题 代码如下: sprintf(result, "%d ", number); memory += 3; sprintf(result, "%d, ", number); memory += 4; 输出: printf(“%s”,(char*)内存) 根据程序的运行情况,我会执行以下操作之一。最初,我分别使用2和3,但这导致了在输出时

我正在使用C的
sprintf
函数向指针写入数据

我将空白字符(空格)、逗号和整数写入该指针。指针的分配为4096字节

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

代码如下:

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

sprintf(result, "%d, ", number);
memory += 4;
输出:
printf(“%s”,(char*)内存)

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


可能是指针的增量不正确或打印不正确?

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

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

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

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

问题是您正在将整数转换为字符串。整数的每个数字将消耗一个字节(sizeof(char))


要解决这个问题,您应该计算数字中的数字并将其添加到内存指针。

可能
momory+=sprintf(结果+内存,输出格式,数字)。。。printf(“%s”,结果)+1因为你发布了与我刚刚接受的答案相同的内容,就在不久之后,你的目标是正确的!很抱歉澄清了这个问题,但这正是我要问的,你提供了一个完美的解决方案!
int number = 1;
sprintf(result, "%d ", number);
>> "1 " -> two bytes
int number = 134;
sprintf(result, "%d ", number);
>> "134 " -> four bytes