c语言字符串的输出问题

printf("%c%c%c",getchar(),getchar(),getchar())
为啥打出来的字符串是反的

printf 后面的参数 是 按从左往右 入栈, 然后 从右往左 出栈计算, 所以 最右边的getchar() 先 接收字符,最后 输出 按 从左往右输出

因为printf的顺序规定了从右到左。 类似的你看这里 https://blog.csdn.net/wd1603926823/article/details/129003849

【下图可能好理解点】

img

【改成这样就是正序了】

char a = getchar();
char b = getchar();
char c = getchar();
printf("%c%c%c", a, b, c);
  • 文章:C语言错误之字符串的输出 中也许有你想要的答案,请看下吧
  • 除此之外, 这篇博客: c语言输入输出总结scanf,printf,getchar,putchar,gets,puts中的 二.getchar()&putchar()函数 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • getchar()和putchar()函数是单个字符输入/输出函数,getchar有一个int型的返回值。当程序调用getchar时.程序就等着用户按键。用户输入的字符被存放在键盘缓冲区中。直到用户按回车为止(回车字符也放在缓冲区中)。当用户键入回车之后,getchar才开始从stdio流中每次读入一个字符。getchar函数的返回值是用户输入的字符的ASCⅡ码,如出错返回-1,且将用户输入的字符回显到屏幕。如用户在按回车之前输入了不止一个字符,其他字符会保留在键盘缓存区中,等待后续getchar调用读取。也就是说,后续的getchar调用不会等待用户按键,而直接读取缓冲区中的字符,直到缓冲区中的字符读完为后,才等待用户按键。

    #include <stdio.h>
    
    int main()
    {
        int c;
        printf("请输入一个字符:");
        c = getchar();
        printf("\n你的输入: ");
        putchar(c);
        printf("\n");
        return 0;
    }