为什么 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
。
我有代码:
#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
。