Персонаж Putchar появляется в начале моей функции printf - PullRequest
0 голосов
/ 02 марта 2019

Используя этот код

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" появляется наначало, а не просто «А» и «65», которые я тоже хочу.

Ответы [ 2 ]

0 голосов
/ 02 марта 2019

Вы не должны передавать 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;
}
0 голосов
/ 02 марта 2019

В этой строке

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

вы вызываете putchar() дважды, что приводит к двойному выводу x.
Вы также используете возвращаемые значения этих двух вызовов для форматированного вывода.
Возвращаемое значение putchar() оказывается (в случае успеха) записанным символом, что делает его несколько прозрачным.
Порядок этого, вероятно, непредсказуем, но он объясняет ваш наблюдаемый результат.

Сравнить https://en.cppreference.com/w/c/io/putchar
в нем

Возвращаемое значение
В случае успеха возвращает записанный символ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...