vậy là do mac dỏm nha
câu hỏi tương tự: https://stackoverflow.com/questions/27238564/getting-a-weird-percent-sign-in-printf-output-in-terminal-with-c
https://stackoverflow.com/questions/62097474/why-does-a-percentage-appear-at-the-end-of-the-output-to-standard-out-but-not
@Kevin states: When (non-null) output from a program doesn’t include a trailing newline, zsh adds that color-inverted % to indicate that and moves to the next line before printing the prompt; it’s generally more convenient than bash’s behavior, just starting the command prompt where the output ended.
là do tính năng của loại shell đó, ví dụ zsh. Có lẽ là để tránh gây hiểu lầm khi output mà ko có \n cuối cùng để tách biệt với promt. ví dụ prompt là "user@computer$ " thì khi 1 chương trình output ko có ký tự newline cuối cùng nó sẽ in thành
user@computer$ ./a.out
Text
Text1
Text2
Text3user@computer$
nên có loại shell nó thêm ký tự % để ngăn cách thành Text3%user@computer$
cách khắc phục là đổi shell khác mà xài hoặc đổi OS khác
edit: cách khắc phục: https://superuser.com/questions/645599/why-is-a-percent-sign-appearing-before-each-prompt-on-zsh-in-windows/645612#645612
thêm dòng này trong ~/.zshrc
unsetopt PROMPT_SP
hoặc 3 dòng này
setopt PROMPT_CR
setopt PROMPT_SP
export PROMPT_EOL_MARK=""
hoặc tốt hơn là đốt zsh