
- •4.Элементы языка Си. Символы, лексемы, знаки операций.
- •1.Символы языка
- •2.Лексемы
- •5.Элементы языка Си. Константы, идентификаторы, ключевые слова, комментарии.
- •6.Типы данных.
- •7.1,Объявление переменных. Массивы.
- •7.2,Объявление переменных. Массивы.
- •9.1,Операции и выражения. Арифметические операции
- •11. Логические операции и операции отношения. Операции присваивания
- •12.Условное выражение. Операция Sizeof. Операции приведения типов type.
- •13.1,Преобразование типов в выражения. Правила приведения типов.
- •13.2,Преобразование типов в выражения. Правила приведения типов.
- •14.1, Управление вычислительными процессами. Конструкции if-else, else-if.
- •14.2, Управление вычислительными процессами. Конструкции if-else, else-if.
- •15.Переключатель
- •16. Операторы цикла.
- •17.1.Инструкции break, continue. Инструкция goto и метки. Пустой оператор
- •17.2.Инструкции break, continue. Инструкция goto и метки. Пустой оператор
- •Пустой оператор
- •18.1.Классы памяти.
- •18.2.Классы памяти.
- •19.1. Функции. Определение ф-ций.
- •Определение ф-ции
- •19.2. Функции. Определение ф-ций.
- •21. Структура программы на языке Си
- •22. Директивы #define и # undef.
- •24,Директивы препроцессора. Препроцессорные операции.
- •Препроцессорные операции
- •25.1, Указатели.Операции &,*.
- •25.2, Указатели.Операции &,*.
- •26. Указатель на неопределенный тип.
- •27.1,Выражения и операции с указателями. Присваивание указателей
- •Сравнение указателей
- •27.2,Выражения и операции с указателями. Применение арифметических операций к указателям
- •29. Массивы и указатели.
- •30.Операции с указателями на массив. Адресная арифметика.
- •32.Массивы указателей. Указатели на указатели.
- •33.Массивы указателей на строки.
- •34.1,Передача параметров из операционной среды.
- •34.2,Передача параметров из операционной среды.
- •36.1,Динамичное распределение памяти.
- •36.2,Динамичное распределение памяти.
- •37,1,Структуры. Операции над структурами
- •37,2,Структуры. Операции над структурами
- •38.Массив структур. Правило выравнивания структурных переменных в памяти
- •39.1,Переименование типов. Средство typedef.
- •39.2,Переименование типов. Средство typedef.
- •40.Поля битов.
- •41.1,Объединения
- •41.2,Объединения
- •42.Ввод, вывод потока.
- •43.Доступ к файлам через поток ввода/вывода.Открытие потока.Закрытие потока.
- •44.1,Доступ к файлам через поток ввода/вывода.Функция потокового ввода вывода.
- •44.2,Доступ к файлам через поток ввода/вывода.Функция потокового ввода вывода.
- •45,Последовательный и прямой доступ в поток.
41.2,Объединения
Инициализировать объединение можно только значением, имеющим тип его первого элемента.
union u {
int i;
char c;
long int l;
} a,b;
a.i=100;
Часто объединения применяются в случаях, когда надо выделить часть целого и переменной или загрузить объединение в структуру, описанную с полями битов.
42.Ввод, вывод потока.
При вводе/выводе потока все данные рассматриваются как поток отдельных байтов, независимо от того, какое используется устройство ввода/вывода, т.е. поддерживается некоторая абстракция между программой и физическим устройством. Эта абстракция и называется потоком, т.е. поток - это источник или получатель данных.
Так как потоки не зависят от физических устройств, одна и та же функция может выводить информацию на екран и на диск одновременно. Существует 2 типа потока:
1)текстовый поток – последовательность строк, каждая строка имеет 0 или n литер и заканчивается \0 , но операционная среда может потребовать коррекцию текстового потока. Например, пара символов: возврат каретки и перевод строки трактуются как один символ перевода строки при вводе.
2)бинарный поток – последовательность непреобразуемых байтов, которые взаимнооднозначно соответствуют тому, что находится на внешнем устройстве.
Чтобы связать поток с файлом или устройством, его необходимо открыть. Эта связь разрывается посредством закрытия потока.Открытие файла возвращает указатель на обьект типа FILE.
С началом работы автоматически открываются 5 потоков:
stdin – стандартный ввод;
stdout – стандартный вывод;
stderr – стандартный вывод сообщения об ошибках;
stdaux – стандартный дополнительный поток;
stdprn – стандартная печать.
По умолчанию 1-3 относятся к консоли и открываются в текстовом режиме, 4-5 открываются в двоичном режиме.Режим доступа к файлу устанавливается во время его открытия как параметр функции открытия или с помощью спец. переменной _fmode, которая находится в <fctl.h> или <stdlib.h>. fmode может принимать 2 значения: O_BINARY – открывается в двоичном режиме, O_TEXT – в текстовом режиме. По умолчанию устанавливается текстовый режим.
Связующим звеном между файлом и потоком является указатель на файл. Указатель на файл – это указатель на структуру типа FILE, ее шаблон определен в stdio.h. Этот указатель используется для последующей ссылки на поток.
43.Доступ к файлам через поток ввода/вывода.Открытие потока.Закрытие потока.
Связующим звеном между файлом и потоком является указатель на файл-это указатель на информацию , которое определяет различные характеристики файла(имя, режим доступа, текущая позиция указателя).
Указатель на файл - это указатель на структуру типа FILE, шаблон которой содержится в < stdio.h>. Этот указатель используется для последующих ссылок на потоки
FILE* fp-объявление.
Открытие потока.
Функция fopen открывает поток и связывает с ним файл с заданым именем , она возвращает указатель связанный с этим файлом или NULL если попытка открытия неудачна.
Прототип этой функции FILE*fopen(char *filename,char *mode);
char *filename-указатель на строку-имя файла.
char *mode-задает режим открытия файла.
char *mode может принимать следующие значения :
«r»-открыть только для чтения
«w»-создать для записи .
«a»-открыть файл для добавления в конец файла.
«r+»-открыть для исправления (для чтения и записи)
«w+»-создать для исправления (старое содержимое теряется)
«a+»-открыть файл для исправления уже существующей информации и добавления ее в конец.
Если любой из режимов дополнить буквой b, это означает что файл открывается в двоичном режиме.
ПР: открытие файла “good”
FILE *fp;
If ((fp = fopen(“good”,”r”))==NULL)
printf(“Can not open file\n”); exit(1);}
При открытии файла для чтения требуется, чтобы он существовал. В случае открытия для чтения и записи, существующий файл не уничтожается, если он есть, создается если его нет.
Функция freopen переназначает указатель потока на другой поток. Прототип этой функции: FILE *freopen (char *filename, char *mode, FILE *stream);
Функция открывает файл в режиме mode и свзывает его с потоком stream. Обычно используют для замены файлов, связанных с <stdin>, <stout>…
Закрытие потока.
Функция fclose закрывает отдельный поток, а fcloseall закрывает все открытые потоки, за исключением стандартных.
int fclose (FILE*fp),
возвращает NULL, в случае успешного закрытия файла и EOF в случае ошибки, при этом все данные из буфера считываются в файл. Если поток не закрыт, то он закрывается автоматически по окончании программы. Одновременно можно иметь до 20 открытых потоков.
Функция remove уничтожает заданный файл int remove (char *filename)
возвращает NULL при успешной операции.