【发布时间】:2014-03-25 10:26:41
【问题描述】:
我正在使用 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 个字节,这应该足够正确输出了。
也许我不正确地递增指针或打印不正确?
【问题讨论】:
-
也许是
momory += sprintf(result+memory, out_format, number); ... printf("%s", result); -
+1 因为您发布的内容与我刚刚接受的答案相同,只是稍晚一点
标签: c pointers memory-management increment