为什么 putchar() 打印出带有“%”符号的字符?

Why is putchar() printing out the char with the "%" symbol?

我有代码:

#include <stdio.h>
int main(void) {
    int c;
    c = getchar();
    putchar(c);

    return 0;
}

编译和 运行 之后,当我输入 k 例如,它打印出 k%。 为什么打印出 %?

编辑:我测试了一些东西并意识到它是 shell(我正在使用带有 oh-my-zsh 配置的 zsh,这非常棒)这样做是为了达到新队。我在 main() 函数的末尾附加了 putchar('\n') ,但它没有打印出来。感谢您的宝贵意见。

(请告诉我否决票的原因,以便我以后改进我的进一步问题)

有几件事可能导致 % 标志出现:

你的程序输出 k 没有 一个新行,你的 shell 提示看起来像这样:

% 

意思是你运行程序是这样的:

% ./a.out
k //getchar
k% //putchar + exit + shell prompt

简而言之:% 不是输出的一部分。

你的代码触发 UB 当然有问题:隐式 int return 类型自 C99 及更高版本以来不再是 C 标准的一部分,并且你的 main功能不太对,一些符合标准的主要功能是:

int main(void);
int main (int argc, char **argv);
int main (int argc, char *argv[]);

使用 () 不是一回事。

最后,您没有 return 从 main 中获取您应该做的任何内容,只需在末尾添加 return 0