#include "stdio.h"
int main (void) {
char xx[1000] = "hello";
sprintf (xx, "xyzzy plugh %s", xx);
printf ("%s\n", xx);
return 0;
}
::: :(错误)未定义的行为:在调用sprintf或snprintf时错误地使用了xx。 Quote:如果由于调用sprintf()或snprintf()而重叠的对象之间发生复制,结果是未定义的。
答案 0 :(得分:1)
准确地说是什么。您将相同的数组作为输入和输出传递给sprintf(),这不是受支持的用法,因为无法保证sprintf将按升序写入输出字符串。
答案 1 :(得分:1)
您正在写入char数组xx以及将其用作副本的源。此行为未定义。这是关于这种情况的现有问题: