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

问题描述 投票:-1回答:2

使用此代码

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'。

c printf putchar
2个回答
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;
}

2
投票

在这一行

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

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.