- •Библиотеки и ввод-вывод данных
- •Ввод-вывод данных. Основные понятия
- •Классификация функций ввода-вывода верхнего уровня
- •Обработка ошибок ввода-вывода
- •Открытие, закрытие и удаление файлов
- •Бесформатный ввод-вывод данных текстовых файлов Посимвольный ввод-вывод данных
- •Построчный ввод-вывод данных
- •Построчный вывод данных
- •Форматный ввод-вывод данных текстовых файлов Форматный ввод данных
- •Форматы ввода данных
- •Форматный вывод данных
- •Форматы вывода данных
- •Форматный вывод арифметических данных
- •Форматный вывод символьных и строковых данных
- •Ввод-вывод записей
- •Ввод записей
- •Вывод записей
- •Дополнительные возможности ввода-вывода данных
Бесформатный ввод-вывод данных текстовых файлов Посимвольный ввод-вывод данных
Имя функции |
Назначение функции |
getc, fgetc |
ввод символа из входного потока (файла) |
getchar, fgetchar |
ввод символа из файла stdin (с клавиатуры) |
ungetc, ungetch |
возврат символа во входной поток |
putc, fputc |
вывод символа в файл |
putchar |
вывод символа в стандартный файл stdout |
getch |
ввод символа без эхопечати из файла stdin |
putch |
вывод символа на экран |
Назначение и состав функций посимвольного ввода-вывода данных
Для ввода одного символа используются функции getc, fgetc getchar, fgetchar и getch.
Прототипы функций getc, fgetc идентичны:
int getc (FILE *stream);
int fgetc (FILE *stream);
где stream – имя указателя для файла входного потока.
Прототипы функций getchar , fgetchar идентичны:
int getchar (void);
Вызов функции getchar эквивалентен вызову функции getc (stdin).
Функции getc и getchar читают символ из входного потока и перемещают связанный с ним указатель на следующий символ.
Все функции посимвольного ввода возвращают значение кода прочитанного символа или значение EOF, если произошла ошибка или достигнут конец файла.
Прототип функции getch:
int getch (void);
Функция getch читает один символ из стандартного файла stdin (с клавиатуры) без эхопечати его на экран.
Пример Вызов функций посимвольного ввода
char ch;
ch = getc(fid);
ch = fgetc(fid);
ch = getchar ( );
ch = getch( );
Прототипы функций ungetc , ungetch:
int ungetc (int c, FILE *stream);
int ungetch (int c);
Функции ungetc и ungetch возвращают символ, код которого задан значением параметра c, во входной поток: ungetc – в поток stream, ungetch – на консоль, то есть в буфер.
Возвращаемое значение – код символа или значение EOF, если попытка возвратить символ неудачна.
Возврат символа обратно во входной поток может быть необходим, например: если функция getc прочла “лишний” символ, который нельзя включить в ранее введённое значение, например, букву после числа.
Для вывода одного символа используются функции putc, fputc, putchar и putch. Они выводят один символ, заданный параметром, в текущую позицию выходного потока. Функция putchar выводит символ в стандартный выводной файл stdout. С помощью названных функций можно установить курсор в начало следующей строки, если значение выводимого символа ‘\n’.
Прототипы функций putc, fputc идентичны:
int putc (int c, FILE *stream);
int fputc (int c, FILE *stream);
где c – код выводимого символа.
Пример Вызов функций посимвольного вывода
putc (c, stdout); // вывод в стандартный выходной поток
putc ( c, fres);// для вывода в файл fres
fputc ( c, fres);// для вывода в файл fres
Прототипы функций putchar, fputchar идентичны:
int putchar (int c);
int fputchar (int c);
Вызов функции putchar(c) идентичен вызову функции putc(c, stdout).
Все функции посимвольного вывода возвращают:
код выведенного символа, если вывод успешен; значение EOF, если вывод неуспешен.
Прототипы функций getch и putch находятся в файле conio.h.
Прототип функции putch:
void putch (int c);
Замечание Функции fgetc, fgetchar, getchar, fputc, fputchar, putchar реализованы с помощью макроопределений функций getc, getchar, putc, и putchar в файле stdio.h.
Пример
#define getchar( ) getc(stdin)
Пример
#include <stdio.h>
#include <conio.h>
int main(void)
{
char a='s', b='B', c='\n';
int i = 97, j=98;
putc(i, stdout);putc(j, stdout); putc(a, stdout); putc(b, stdout);putc(c, stdout);
putchar(i);putchar(j); putchar(a);putchar(b); putchar(c);
putch(i); putch(j);putch(a);putch(b); putch(c);
return 0;
}
Результат выполнения программы:
absB
absB
absB
В качестве символов можно использовать управляющие коды или esc-последовательности, например, c = ‘\n’.
Пример (с. 333)
#include <stdio.h>
int main(void)
{
printf("a");// На экран выводится символ “a”
getchar(); /*Функция getchar используется для временной приостановки программы; вводится очередной (любой) символ, например, “z ”, затем нажимается клавиша <Enter>; getchar читает из внутреннего буфера код символа “z”*/
printf("b");// На экран выводится символ “b”
getchar();/*getchar читает из внутреннего буфера код клавиши <Enter> из внутреннего буфера; к моменту вызова getchar буфер не был пуст; остановки программы не происходит*/
printf("c"); // На экран выводится символ “c”
return 0;
}
Пример (с. 335)
#include <stdio.h>
int main(void)
{
int c;
while ((c=getchar())!= EOF)
putchar(c);
return 0;
}
или
#include <stdio.h>
int main(void)
{
int c;
while ((c=getc(stdin))!= EOF)
putc(c, stdin);
return 0;
}