在我的代码中,我使用如下 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 年代的格式说明符。我不能在第一步中执行此操作,因为我需要附加多个字符串并在最后一步执行格式说明符。
复制到临时缓冲区并从那里复制到原始缓冲区是唯一可能的解决方案吗?您能否对此有所了解。