为什么putchar()用“%”符号打印出char?

时间:2016-02-19 09:33:03

标签: c getchar putchar

我有代码:

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

    return 0;
}

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

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

(请告知我原因,以便我将来可以进一步提出更多问题)

1 个答案:

答案 0 :(得分:1)

可能会导致%符号出现:

您的程序在没有新行的情况下输出k ,而您的shell提示符如下所示:

% 

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

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

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

您的代码触发UB当然存在问题:隐式int返回类型不再是C标准的一部分,因为C99及以上,而您的main函数不太正确,一些符合标准的主要功能是:

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

使用()并不是一回事。

最后,您还没有从main返回任何内容,您应该这样做,只需在结尾处添加return 0