【发布时间】:2013-08-28 16:23:13
【问题描述】:
在我的代码中,我使用如下 snprintf 并且可以看到以下行为
char text[30] = {0};
snprintf(text, sizeof(text), "%s", "hello");
printf("Interm... %s\n", text);
snprintf(text, "%20s", text);
printf("At the end ... %s\n", text);
输出
Interm... hello
At the end ...
您可以看到 snprintf 的源和目标是否相同,它会清除缓冲区。我希望输出采用 20 年代的格式说明符。我不能在第一步中执行此操作,因为我需要在最后一步附加多个字符串并执行格式说明符。
复制到临时缓冲区并从那里复制到原始缓冲区是唯一可能的解决方案吗?能否请您对此有所了解。
【问题讨论】:
-
text是如何声明的? -
第二个
snprintf不好,但我更好奇第一个如何将“kiruba”变成“hello” -
第二个 snprintf() 比这更糟糕...它缺少缓冲区大小参数。
-
@Wumpus : 抱歉输入“kiruba”的类型错误..现在我在问题部分更正了