- •4. Идентификаторы. Ключевые слова. Алфавит языка.
- •5. Этапы получения загрузочного файла. Понятие консольного приложения.
- •6.Стандартные типы данных. Типы данных для представления целых чисел.
- •20.Операторы цикла while, do … while. Варианты выражений. Бесконечные циклы.
- •21.Оператор цикла for. Варианты выражений. Тело цикла. Пустой оператор for. Оператор без тела цикла.
- •22. Операторы goto, break, continue, return. Варианты использования.
- •23.Массивы. Индексация, инициализация, размещение элементов в памяти. Определение размера массива.
- •24.Многомерные массивы. Инициализация многомерных массивов. Размещение элементов в памяти.
- •25.Строки. Представление строк. Длина строки. Варианты инициализации строк.
- •31.Область существования имени. Виды областей существования имени
- •32.Область видимости имени. Операция разрешения контекста.
- •33. Классы памяти.
- •34.Структуры. Элементы структуры. Массивы структур.
- •35.Структуры. Передача структур в функции.
- •36.Структуры. Битовые поля в структурах.
- •37.Объединения.
- •38.Перечисления.
- •39.Работа с файлами. Потоки. Буфер.
- •40.Библиотека stdio. Связь с файлами. Открытие и закрытие файла.
- •41.Библиотека stdio. Текстовые файлы – чтение и запись.
- •42.Библиотека stdio. Форматированный ввод/вывод.
- •43.Библиотека stdio. Функция fseek().
- •44.Работа с файлами. Переключение ввода/вывода.
- •45.Операторы времени компиляции inline и typedef.
- •46.Директива препроцессора #define. Макросы с формальными параметрами.
- •47.Директивы условной компиляции. Директивы #if, #else, #elif и #endif
39.Работа с файлами. Потоки. Буфер.
Объявление файловой переменной:
FILE *in;
Существует 2 вида потоков:
1)Текстовый поток — это последовательность символов.
2)Двоичный поток — это последовательность байтов, которая взаимно однозначно соответствует байтам на внешнем устройстве, причем никакого преобразования символов не происходит.
ofstream os("text.txt");//ввод с помощью потока в файл
os << "Hello";
os.close();
char a[6];
ifstream is("text.txt");//чтение из файла
is >> a;
cout << a;
is.close();
Для чтения и записи данных, тип которых может занимать более 1 байта, имеется две функции: fread() и fwrite() .
Для fread() буфер — это указатель на область памяти, в которую будут прочитаны данные из файла.
А для fwrite() буфер — это указатель на данные, которые будут записаны в файл.
40.Библиотека stdio. Связь с файлами. Открытие и закрытие файла.
Объявление файловой переменной:
FILE *in;
Открытие файла:
in = fopen("File", "r");
Команда закрытия файла:
fclose(in);
Вторым аргументом функции fopen является строка, определяющая режим открытия файла:
"r" – открывает существующий файл для чтения,
"w" – открывает/создает файл для перезаписи (старое содержимое стирается),
"a" – открывает/создает файл для дозаписи (старое содержимое сохраняется).
"r+" - существующий файл открывается для чтения/записи в любом месте, кроме конца файла (недопустимо увеличение размеров файла).
"w+" - файл открывается/создается для чтения/записи в любом месте файла (файл может увеличиваться, старое содержимое стирается).
"a+" - файл открывается/создается для чтения/записи в любом месте файла (файл может увеличиваться, старое содержимое сохраняется).
41.Библиотека stdio. Текстовые файлы – чтение и запись.
Для чтения/записи данных используются функции библиотеки stdio.h
ch=getc(in); // читает символ из файла in
putc(ch,out); // пишет символ в файл out
42.Библиотека stdio. Форматированный ввод/вывод.
fscanf(in,"%d",&age); // форматированный ввод из файла in
fprintf(out,"Data is %d.\n",age); // форматированный вывод в файл out
43.Библиотека stdio. Функция fseek().
Функция fseek() позволяет нам обрабатывать файл подобно массиву и непосредственно достигать любого определенного байта в файле, открытом функцией fopen(). fseek() имеет три аргумента и возвращает значение типа int.
Первый аргумент - указатель на файл, второй аргумент - к-во байтов, на которые нужно переместиться от точки, задаваемой третьим аргументом (0 - начало файла, 1 - текущая позиция, 2 - конец файла).
Функция fseek( ) возвращает 0, если все хорошо, и -1, если есть ошибка.
while(fseek(in, set++,0) ==0)
putchar(getc(in));
44.Работа с файлами. Переключение ввода/вывода.
45.Операторы времени компиляции inline и typedef.
Спецификатор inline указывает компилятору, что открытая подстановка тела функции предпочтительнее обычной реализации вызова функции и что он должен пытаться каждый раз генерировать в месте вызова код, соответствующий встраиваемой функции, а не создавать отдельно код функции (однократно) и затем вызывать её посредством обычного механизма вызова. inline int max(int x, int y) { return x > y ? x : y; }
Объявление, начинающееся с ключевого слова typedef, вводит новое имя для типа. Целью такого объявления часто является назначение короткого синонима для часто используемого типа. Например, при частом применении unsigned char можно ввести синоним uchar.
typedef unsigned char uchar; |
// Теперь uchar – синоним для unsigned char |
Имена, вводимые с помощью typedef, являются синонимами, а не новыми типами.