【问题标题】:Compiling C code in terminal, always shows a % if I don't put a newline在终端中编译 C 代码,如果我不添加换行符,总是显示 %
【发布时间】:2020-09-08 23:31:13
【问题描述】:

所以当我在终端中运行一个程序时,例如只是一个简单的 printf,

#include <stdio.h>

int main(){
   printf("Hello");
   return 0;
}

在终端中,它将打印 你好% 但是如果我以 printf("Hello\n"); 运行它,那么即使在它下面的空白行中也没有 %

有人知道怎么回事吗?

编辑:

要编译,在终端:gcc hello.c

运行:./a.out

什么终端返回:Hello%

【问题讨论】:

  • 嗨,欢迎来到 SO!请向我们提供更多详细信息。向我们展示整个代码以及如何运行程序。
  • 我进行了编辑以显示我是如何编译/运行它的。我真的不知道我还能提供什么其他信息。
  • 所以你的代码中没有#include &lt;stdio.h&gt;
  • 啊,我错过了。我的代码中确实有这个,是的,我很抱歉。
  • 你是否使用 % 作为 Bash 指标?

标签: c macos terminal


【解决方案1】:

我的猜测是它在字符串的末尾打印了一个额外的垃圾字符。无论出于何种原因,您的字符串文字的长度计算不正确。

在字符串末尾添加一个空字节,像这样...

"hello\0"

... 应该可以解决问题。对所有 char-array 字符串进行空终止是一个好习惯。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-02-06
    • 2015-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-22
    • 2015-01-09
    相关资源
    最近更新 更多