我有代码:
#include <stdio.h>
int main(void) {
int c;
c = getchar();
putchar(c);
return 0;
}
在编译和运行后,例如,当我输入k
时,它会输出k%
。
为什么要打印%
?
编辑:我测试了一些东西,并意识到它是shell(我正在使用带有oh-my-zsh配置的zsh非常棒)正在这样做才能到达新的一行。我将putchar('\ n')附加在main()
函数的末尾,但它不打印出来。感谢您提供的有用评论。
(请告知我原因,以便我将来可以进一步提出更多问题)
答案 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
。