Эти функции помещают один символ в текущую позицию выходного потока. Прототипы функциий представлены ниже:
int putc( int ch, FILE *stream );
int putchar( int ch );
Функция putc() отличается от putchar() наличием второго аргумента, который определяет выходной поток, в который помещается символ. Она может использоваться и для записи символов в открытый файл и для записи в стандартные потоки ввода-вывода. В частности, если второй аргумент функции равен константе stdout, то она эквивалентна функции putchar() и выводит символ в стандартный выходной поток. Этот поток может идти на экран дисплея или в файл, если используется свойство переназначения потока. Фактически функция putchar() является макроопределением:
#define putchar(_c) putc((_c),stdout)
Первые параметры обеих функций совпадают по смыслу и задают ASCII-код выводимого символа (не смотря на то, что переменная ch целого типа, используется только ее младший байт). При этом функции обрабатывают управляющие символы. Список управляющих символов приведен в таблице 13.1:
Символ Код ASCII Значение
\a 07h звуковой сигнал
\b 08h перемещение назад
\f 0Ch переход к новой странице
\n 0Ah новая строка
\r 0Dh возврат каретки
\t 09h горизонтальная табуляция
\v 0Bh вертикальная табуляция
\' 27h символ кавычки
\" 22h двойная кавычка
\\ 5Ch обратный слеш
\% 25h знак процента
Таблица 13.1 Управляющие символы.
Функции возвращают ASCII-код выведенного символа, а в случае ошибки возвращают константу EOF. Чтобы конкретизировать ошибку можно воспользоваться функцией ferror().
// использование функци putchar()
#include <stdio.h>
void main(void) {
char *ptr, out_str[] = "\aputchar\nputc\a";
for(ptr = out_str; *ptr; putchar(*(ptr++)) ); }
Включаемый файл stdio.h содержит спецификации функций putchar() и putc(). Следовательно, этот файл необходимо включать во все программы, использующие данные функции.