小编use*_*474的帖子

printf:%*c不能打印少于1个字符

我有一个代码打算在字符串后打印一些空格(以删除最终可能在这里的内容,因为我正在移动光标).

所以,我使用了这样的东西:

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,人们可以合理地希望什么都不打印,对吗?这是一个未定义的行为,或者它可能是一个但是在标准库中(我怀疑它,但是......)?

c printf

4
推荐指数
1
解决办法
151
查看次数

标签 统计

c ×1

printf ×1