使用 C 在终端的 printf 输出中得到一个奇怪的百分号

问题描述 投票:0回答:3

我的程序末尾有这样的

printf
声明:

printf("%d", total_candies);

total_candies
是一个
int
,虽然我希望一切都能正常工作,以及实际的数字,但我在最后得到了一个奇怪的百分号。 enter image description here

谁能告诉我为什么会这样?

c printf zsh
3个回答
145
投票

当程序的(非空)输出不包含尾随换行符时,zsh 会添加颜色反转的

%
来指示这一点,并在打印提示之前移动到下一行;它通常比 bash 的行为更方便,只需在输出结束的地方启动命令提示符即可。


5
投票

在命令行中运行

PROMPT_EOL_MARK=''
可以修复此问题。


2
投票

zsh

PROMPT_SP
尝试保留部分行(即不以换行符结尾的行),否则由于
PROMPT_CR
选项,该行将被命令提示符覆盖。这是通过输出一些光标控制字符(包括一系列空格)来实现的,当存在部分行时,这些字符应该使终端换行到下一行(请注意,只有当您的终端具有自动边距(这是典型的)时,这才会成功) .

保留部分线条时,默认情况下您将看到一个

inverse+bold character at the end of the partial line
‘%’
代表
normal user
‘#’
代表
root
。如果设置,shell 参数
PROMPT_EOL_MARK
可用于自定义部分行末尾的显示方式。

© www.soinside.com 2019 - 2024. All rights reserved.