当我在printf语句中不添加`\n`时,为什么输出中有'%`?

acg*_*ant 0 c printf

我写了一个C程序:

#include <stdio.h>

int main() {
  printf("a\n");
}
Run Code Online (Sandbox Code Playgroud)

执行它,得到这个:

a   
Run Code Online (Sandbox Code Playgroud)

但是如果我不在\nprintf语句中添加,那么我会得到这个:

a%
Run Code Online (Sandbox Code Playgroud)

为什么?

更新:以下是他们的图片:

第一案和第二案

nul*_*ptr 5

%角色很可能是您的命令行提示符.

'\n'是一个新线字符.可能在第一种情况下,你会看到%下一行,紧接着a,如下所示:

// printf("a");
% gcc prog.c
% ./a.out
a%
 ^

// printf("a\n");
% gcc prog.c
% ./a.out
a
%
^
Run Code Online (Sandbox Code Playgroud)

编辑:事实证明,有些shell会%在部分输出行的末尾打印特殊字符(例如),以防止它们被提示覆盖.有关详细信息,访问https://superuser.com/questions/645599/why-is-a-percent-sign-appearing-before-each-prompt-on-zsh-in-windows