-4

我有代码:

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

    return 0;
}

并在编译和运行后,k例如当我输入时,它会打印出k%. 为什么会打印出来%

编辑:我测试了一些东西并意识到它是外壳(我正在使用带有 oh-my-zsh 配置的 zsh,这非常棒)这样做是为了进入一个新行。我在函数末尾附加了 putchar('\n')main()并且它没有打印出来。感谢您的有用评论。

(请让我知道拒绝投票的原因,以便我将来改进我的进一步问题)

4

1 回答 1

1

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

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

% 

这意味着您像这样运行程序:

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

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

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

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

使用()不是一回事。

最后,您没有从 中返回任何内容main,您应该这样做,只需return 0在末尾添加即可。

于 2016-02-19T09:53:19.970 回答