Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Си_3.doc
Скачиваний:
3
Добавлен:
25.08.2019
Размер:
192 Кб
Скачать

Бесформатный ввод-вывод данных текстовых файлов Посимвольный ввод-вывод данных

Имя функции

Назначение функции

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;

}