我有一个代码打算在字符串后打印一些空格(以删除最终可能在这里的内容,因为我正在移动光标).
所以,我使用了这样的东西:
int some_length = 0;
char some_string[]="hello world";
printf( "%*c%s\n", some_length, ' ', some_string );
Run Code Online (Sandbox Code Playgroud)
我认为它会产生"hello world",但不会产生"hello world"(请注意,在我的真实代码中,空格是在字符串之后打印的,因为目标是擦除,而不是缩进,我只是这样做有工作样本).
那么,这种行为是有意的吗?由于some_length是0,人们可以合理地希望什么都不打印,对吗?这是一个未定义的行为,或者它可能是一个但是在标准库中(我怀疑它,但是......)?