- •Динамическое распределение памяти. Связанные списки.
- •Особенности использования связанных списков.
- •Простой связанный список.
- •Библиотека языка с и ввод-вывод.
- •Потоковый ввод-вывод.
- •Текстовые файлы с буферизацией.
- •Переназначение ввода и вывода.
- •Изменение буфера потока.
- •Закрытие потоков.
- •Низкоуровневый ввод и вывод в с.
- •Ввод и вывод символов.
- •Использование функций getc(), putc(), fgetc() и fputc().
- •Простая программа сжатия файла.
- •Использование функций getchar(), putchar(),fgetchar() и fputchar().
- •Использование функций getch() и putch().
Ввод и вывод символов.
Ввод/вывод в С реализован с использованием функций,
Использование функций getc(), putc(), fgetc() и fputc().
Две функции getc() и putc() работают аналогично функциям getchar() и putchar().мы должны сообщить, какой файл следует использовать.
ch = getc(in);
— для получения символа от файла, на который указывает in.
putc(ch, out);
предназначена для записи символа ch в файл, на который ссылается указатель out типа FILE.
Функция putc() выдает один символ в файловый поток,
putc(ic,stdout);
Функцию getc() нельзя использовать для обработки одиночных клавиш,
getc() и putc() являются не истинными функциями, а макросами. Функции fgetc() и fputс() идентичны их аналогам макросам getc() и putc().
Простая программа сжатия файла.
#include<stdio.h>
#include<windows.h>
void main(int argc, char *argv[])
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
FILE *ptrin, *ptrout;
char ch;
int i=0;
if(argc!=3)
printf("Неверный синтаксис команды\n");
if((ptrin=fopen(argv[1],"r"))==NULL)
{
printf("Ошибка открытия файла\n");
}
if((ptrout=fopen(argv[2],"w"))==NULL)
{
printf("Ошибка открытия файла\n");
}
while(getc(ptrin)!=EOF)
{
fseek(ptrin, -1, SEEK_CUR);
ch=getc(ptrin);
if((i++)%2==0)
putc(ch, ptrout);
}
fclose(ptrin);
fclose(ptrout);
}
Использование функций getchar(), putchar(),fgetchar() и fputchar().
На самом деле два макроса getchar() и putchar() являются особыми реализациями макросов getc() и putc().
int ic;
ic = getchar() ;
и
putchar(ic);
В случае ошибки функция putchar() возвращает значение EOF.
Макросам getchar() и putchar() эквивалентны функции fgetchar() и fputchar().
Использование функций getch() и putch().
Функции getch() и putch() являются полноценными низкоуровневыми функциями, Они сразу же вводят символ, нажатый на клавиатуре.
Функции getch() и putch() используются так же, как и getchar() и putchar().Функция getch() видит символ, введенный с клавиатуры, сразу же после нажатия клавиши; Эта возможность позволяет использовать getch() для обработки однократных нажатий клавиш, что невозможно с функциями getc() или getchar().