Putchar字符出现在我的printf函数的前面

时间:2019-03-02 10:38:31

标签: c printf putchar

使用此代码

void echo_char_code() {
    int x;
    printf ("Please enter a character:\n");
    x = getchar();
    printf("The character code of '%c' is %d", putchar(x), putchar(x));
    printf(". \n");
}

int main() {
    echo_char_code();
    return 0;
}

但是由于某种原因,我的输出是

AAThe character code of 'A' is 65.

我想知道为什么“ AA”出现在开头,而不仅仅是我想要的“ A”和65。

2 个答案:

答案 0 :(得分:3)

您不应将putchar(x)用作参数,而应使用变量x。

void echo_char_code() {
    int x;
    printf ("Please enter a character:\n");
    x = getchar ();
    printf("The character code of '%c' is %d", x, x)); // changing putchar(x) to x solves the problem.
    printf (". \n");
}

int main() {
    echo_char_code();
    return 0;
}

答案 1 :(得分:2)

在这一行

printf("The character code of '%c' is %d",putchar(x),putchar(x));

您两次致电putchar(),这两次输出x。
您还将使用这两个调用的返回值来执行格式化输出。
putchar()的返回值恰好是(成功的情况下)书面字符,这使它有些透明。
其顺序可能无法预测,但确实可以解释您观察到的结果。

比较https://en.cppreference.com/w/c/io/putchar
它指出

  

返回值
  成功后,返回书面字符。