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

时间:2013-12-28 11:17:51

标签: c printf

我写了一个C程序:

#include <stdio.h>

int main() {
  printf("a\n");
}

执行它,得到这个:

a   

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

a%

为什么?

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

First case and second case

3 个答案:

答案 0 :(得分:5)

%字符很可能是您的命令行提示符。

'\n'是一个换行符。可能在第一种情况下,您会在%之后的下一行看到a,类似于:

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

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

编辑:事实证明,有些炮弹会在部分输出线的末尾打印特殊字符(例如%),以防止它们被提示覆盖。更多详情请见https://superuser.com/questions/645599/why-is-a-percent-sign-appearing-before-each-prompt-on-zsh-in-windows

答案 1 :(得分:4)

%是shell打印的提示。程序终止时打印。如果没有\n,则没有换行符分隔printf()的输出和提示。

答案 2 :(得分:3)

这是你的shell的提示。由于没有最终换行符,程序的输出会直接进入下一个提示符。