为什么在执行没有“ n”的printf后打印字符“%”?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么在执行没有“ n”的printf后打印字符“%”?相关的知识,希望对你有一定的参考价值。

这是我简单的c代码。谁能告诉我为什么它给我这个输出?我正在使用gcc编译器(版本:7.3.0)在arch linux 4.15.1-2-ARCH机器上编码我用以下代码编译:gcc --std = c99 -Wall --pedantic client.c -o client

我有以下代码:

#include <stdio.h>

int main(void) {
  printf("Test.");
  return 0;
}

但它得到以下输出:Test.%

我不知道%来自哪里。如果有人能给我一个提示,那就太好了。

答案

您的printf字符串不包含换行符。因此,在您的程序打印之后,您的shell通常会打印出任何字符串作为提示。

在我的机器上运行:

$ ./x1
Test.$ 

我的提示是“$”,这就是字符串后面出现的内容

(换行符的转义序列)添加到字符串将使您的提示出现在以下行:

printf("Test.
");

输出:

$ ./x1
Test.
$ 
另一答案

尝试:

printf("Test.
");

您的程序打印的单词Test.可能与终端提示符的第一个字符一起加入。添加 将打印一个新的行字符,因此当您的程序退出时,您的终端提示将写在下一行。

以上是关于为什么在执行没有“ n”的printf后打印字符“%”?的主要内容,如果未能解决你的问题,请参考以下文章

C语言怎么在输入完成后把光标移到下一行开始处

printf() 在没有双引号的情况下工作,打印随机字符 [重复]

STM32中使用printf打印字符串为何字符串第一个字符无法打印?

为啥 if 语句没有打印出字符串? cpp

如何使用 printf 打印“-”

for循环为啥在括号外面打印的值加1呢