2013-10-15 3 views
-3

Я использовал getchar и putchar для успешной печати моего введенного символа на экране раньше, однако я немного изменил код, и теперь он дважды печатает мой введенный символ. Код:Печать символа в ANSI C

#include <stdio.h> 

int main() 
{ 
    int charInput; 
    printf("Enter a char >> "); 
    charInput = getchar(); 
    printf("%c", putchar(charInput)); 

    return 0; 
} 

Я знаю, что могу просто использовать putchar без printf, но я хотел поэкспериментировать с ними. Выход, который я получаю:

Enter a char >> a 
aa 

2 символа напечатаны на экране?

+0

'putchar' возвращает принятый аргумент об успехе – P0W

ответ

2

putchar(charInput) напечатает ваш персонаж один раз, а затем возвращает его аргумент, charInput. Затем он переходит к printf, который снова печатает тот же символ.

4

Функция putchar(charInput) сама печать символ 'a' и вернуть десятичный эквивалент полукокса (например ASCII), который печатается в символьном, используя printf() так общее распечатаны два a.

Read Manual page:

int putchar(int c);

Функции, fputc(), putc(), putchar(), putc_unlocked() и putchar_unlocked()возвращение персонаж написан. Если возникает ошибка , возвращается значение EOF. Функция putw() возвращает 0 на успех; EOF возвращается, если возникает ошибка записи, или если попытка сделана для записи потока только для чтения.

Таким образом, вы можете предположить:

printf("%c", putchar(charInput)); 
// ^  ^first `a` 
//  | second `a` 

эквивалентно:

temp = putchar(charInput); // first `a` 
printf("%c", temp);   // second `a` 
1

Это происходит потому, что один приходит из printf и другой из putchar.
ли только это

putchar(charInput); 
Смежные вопросы