Функция putchar
Функция putchar записывает символ в текущей позиции в стандартный поток вывода ( stdout ) и перемещает внутренний указатель положения файла в следующую позицию.
Это эквивалентно putc (charcter, stdout) .
Параметры:
- character
Символ для записи.Символ передается как значение типа int .
Возвращаемое значение
Если ошибок не произошло при вызове функции, то возвращается целочисленное значение символа, который записывался в поток stdout .
При возникновении ошибки, возвращается EOF , а индикатор ошибки устанавливается.
Putchar c что это
При запуске программы на Си автоматически открываются ряд потоков, основными из которых являются следующие:
Стандартный поток ввода stdin
Стандартный поток вывода stdout
Стандартный поток вывода сообщений об ошибках stderr
Стандартный поток ввода stdin по умолчанию соответствует клавиатуре, а потоки stdout и stderr — экрану монитора.
Для управления вводом-выводом с помощью этих потоков используются ряд функций:
getchar() : ввод с клавиатуры одного символа
putchar() : вывод на консоль одного символа
fgets() : ввод одной строки
puts() / fputs() : вывод одной строки на консоль
scanf() : ввод с консоли с форматированием данных
sscanf() : ввод с из строки с форматированием данных
printf() : вывод с форматированием данных
Функции printf и scanf уже рассматривались ранее, поэтому посмотрим, как применять остальные функции.
Ввод и вывод символов
Для ввода и вывода символа применяются функции getchar() и putchar() . Но следует сказать, что на самом деле они полноценными функциями не являются, а определены как макросы в заголовочном файле stdio.h :
Вывод символа
Для вывода отдельного символа на консоль предназначена функция putchar() со следующим прототипом:
Выводимый символ в виде числового кода передается в putchar в качестве параметра, он же возвращается функцией.
Ввод символа
Для ввода одного символа с клавиатуры применяется функция getchar() , которая имеет следующий прототип:
В качестве результата функция возвращает числовой код введенного символа.
При использовании функции getchar следует учитывать, что при печати текста посредством клавиатуры в буфер операционной системы заносятся коды печатаемых символов, а сами символы отображаются на экране. Поучение программой введенного символа из буфера производится с помощью нажатия клавиши Enter.
И если буфер операционной системы не пуст, то при вызове функции getc() она получает очередной символ из буфера. Если же буфер пуст, то происходит чтение байта из потока ввода с помощью системной функции, название которой зависит от операционной системы.
При этом при нажатии клавиши Enter, в буфер также помещается код этой клавиши. То есть если мы введем один символ и нажмем на Enter, в буфере окажутся два числовых кода — введенного символа и клавиши Enter. И это надо учитывать при работе с функцией getchar. В частости, рассмотрим простой, но показательный пример:
Сначала на экран выводится цифра 1, после чего функция getchar ожидает ввода символа. Если после ввода символа мы нажмем Enter, то в буфер будет помещены два числовых кода — введеного символа и клавиши Enter. Поэтому при втором вызове getchar эта функция считывает байт из буфера — то есть числовой код клавиши Enter.
Например, введем при первом вызове функции getchar символ «a», а затем Enter:
Но если при каждом вызове getchar мы будем только нажимать клавишу Enter, тогда в буфер будет заноситься только код этой клавиши, и соответственно программа будет работать, как и ожидалось:
Применим функции getchar и putchar для ввода и вывода символов с клавиатуры:
Функция getchar() считывает числовой код символа, который потом выводится в функции putchar() . Для вывода из программы необходимо ввести комбинацию клавиш Ctrl+C.
Ввод и вывод строк
Вывод строк и puts
Для вывода одной строки на консоль предназначена функция puts() со следующим прототипом:
В качестве параметра передается указатель на строку, а возвращаемым результатом функции является последний выведенный символ.
При этом функция puts() будет выводить символы переданной строки, пока не дойдет до нулевого символа ‘\0’. Если же выводимый массив символов не содержит этого символа, то результат программы неопределен. Например:
Вывод строк и fputs
Функция fputs() также записывает в поток вывода строку, то есть набор символов, который завершается символом ‘\0’. При записи строки нулевой символ ‘\0’ не записывается. Она имеет следующий прототип:
Первый параметр функции — записываемая строка, а второй — указатель на поток вывода. В качестве результата функция возвращает неотрицательное целое число. При ошибках в процессе записи возвращается значение EOF .
Применим функцию для записи в стандартный поток вывода, то есть на консоль. В этом случае в качестве второго параметра надо передать значение stdout :
Ввод строк и fgets
Для ввода строки с клавиатуры применяется функция fgets() , которая имеет следующий прототип:
char *str : строка, в которую производится считывание.
int count : сколько символов необходимо считывать.
FILE *stream : файловый поток, из которого производится считывание. В качестве потока ввода может выступать и консольный ввод.
Функция fgets() прекращает считывание, когда пользователь нажимает клавишу ENTER, то есть когда в поток добавляется символ перевода строки.
Рассмотрим считывание строки с консоли. Для этого в качестве третьего параметра в функцию передается значение stdin :
Здесь функция fgets считывает не более 15 символов в строку name, а В реальности функция предложит ввести 14 символов, так как последний символ зарезервирован для нулевого символа ‘\0’. Если будет введено больше символов, то fgets все равно считает не более 15 символов. Таким образом функция позволяет проверить количество считываемых символов и поэтому считается безопасной.
Пример работы программы:
Стоит отметить, что функция fgets() возвращает указатель char * — указатель на буфер, в который считаны данные. В реальности это тот же самый буфер, который передавался в качестве первого параметра, то есть в примере выше — это массив name. Однако этот результат может нам пригодится для проверки успешности выполнения функции — если считывание прошло неудачно, то функция возвращает NULL :
Name already in use
cpp-docs / docs / c-runtime-library / reference / putchar-putwchar.md
- Go to file T
- Go to line L
- Copy path
- Copy permalink
- Open with Desktop
- View raw
- Copy raw contents Copy raw contents
Copy raw contents
Copy raw contents
Writes a character to stdout .
c
Character to be written.
Returns the character written. To indicate an error or end-of-file condition, putc and putchar return EOF ; putwc and putwchar return WEOF . For all four routines, use ferror or feof to check for an error or end of file. If passed a null pointer for stream , these functions generate an invalid parameter exception, as described in Parameter validation. If execution is allowed to continue, they return EOF or WEOF , and set errno to EINVAL .
The putc routine writes the single character c to the output stream at the current position. Any integer can be passed to putc , but only the lower 8 bits are written. The putchar routine is identical to putc( c, stdout ) . For each routine, if a read error occurs, the error indicator for the stream is set. putc and putchar are similar to fputc and _fputchar , respectively, but are implemented both as functions and as macros (see Recommendations for choosing between functions and macros). putwc and putwchar are wide-character versions of putc and putchar , respectively.
The versions with the _nolock suffix are identical except that they aren’t protected from interference by other threads. They may be faster since they don’t incur the overhead of locking out other threads. Use these functions only in thread-safe contexts such as single-threaded applications or where the calling scope already handles thread isolation.
By default, this function’s global state is scoped to the application. To change this behavior, see Global state in the CRT.
Generic-text routine mappings
| TCHAR.H routine | _UNICODE and _MBCS not defined | _MBCS defined | _UNICODE defined |
|---|---|---|---|
| _puttchar | putchar | putchar | putwchar |
| Routine | Required header |
|---|---|
| putchar | <stdio.h> |
| putwchar | <stdio.h> or <wchar.h> |
The console isn’t supported in Universal Windows Platform (UWP) apps. The standard stream handles that are associated with the console, stdin , stdout , and stderr , must be redirected before C run-time functions can use them in UWP apps. For more compatibility information, see Compatibility.
C Programming/stdio.h/putchar
putchar is a function in the C programming language that writes a single character to the standard output stream, stdout. [1] Its prototype is as follows:
int putchar (int character)
The character to be printed is fed into the function as an argument, and if the writing is successful, the argument character is returned. Otherwise, end-of-file is returned.
The putchar function is specified in the C standard library header file stdio.h.
Sample usage [ edit | edit source ]
The following program uses getchar to read characters into an array and print them out using the putchar function after an end-of-file character is found.
The program specifies the reading length’s maximum value at 1000 characters. It will stop reading either after reading 1000 characters or after reading in an end-of-file indicator, whichever comes first.