- •6. Функции в языке с
- •6.1 Описание функции
- •Void main()
- •6.2 Вызов функции
- •6.3 Варианты описания и использования функций
- •Void main()
- •Void main()
- •Void main()
- •Void main()
- •Void main()
- •7. Работа со строками
- •7.1 Способы описания строк в программе
- •7.2 Ввод-вывод строк
- •7.3 Функции для работы со строками
- •8. Структуры и объединения в языке с
- •8.1 Описание структур
- •8.2 Инициализация структур
- •8.3 Работа с элементами структур
- •8.4 Структуры и указатели
- •8.5. Битовые поля в структурах
- •Работа с битовыми полями:
- •8.6. Объединения
- •Работа с полями объединения
- •8.7. Отличие объединения от структуры
- •8.8. Применение объединений
- •Void main()
- •9. Файлы в языке c. Функции работы с файлами
- •A) чтение данных из файла
- •Б) запись данных в файл
- •Дополнительные функции для работы с файлами
- •10. Программирование в графическом режиме
- •Функции библиотеки graphics
- •Управление графической системой Управление графическим режимом производится с помощью следующих функций:
- •Черчение и заполнение
- •Управление цветом
- •Обработка ошибок в графическом режиме
- •Функции запроса состояния
- •Void main()
- •11. Директивы препроцессора
- •11.1. Директива #include
- •11.2. Директива #define
- •11.3. Директива #undef
- •12. Побитовые (поразрядные) операции
- •Использование побитовых операций
7.2 Ввод-вывод строк
1. Для ввода строк можно использовать следующие 2 функции:
- scanf(“%s”,имя_строки); - универсальная функция ввода
- gets(имя_строки); - специальная функция для
ввода строк с клавиатуры
Различие между scanf и gets состоит в том, что scanf вводит строку до 1-го пробела, в то время как gets вводит строку полностью, до нажатия клавиши ENTER.
Пример:
char fio[30];
scanf(%s”,fio);
gets(fio);
Вводим с клавиатуры:
Калашников И.П.ENTER
В результате работы функции scanf() в переменную fio запишется только фамилия (строка до первого пробела):
“Калашников”
В результате работы функции gets() в переменную fio запишется вся введенная с клавиатуры строка (до нажатия ENTER):
“Калашников И.П.”
2. Для вывода строк на экран можно использовать 2 функции:
- printf() c форматом %s
printf(“%s”,fio);
- puts(имя_строки);
puts(fio);
Эти функции выводят в строку полностью, но puts() всегда выводит курсор на начало следующей строки, а printf() переводит, если есть символ ‘\n’: “%s\n”.
7.3 Функции для работы со строками
Это стандартные функции, которые находятся в библиотеке языка С. Для их подключения необходимо в начале программы записать директиву препроцессора:
#include <string.h>
Рассмотрим основные, наиболее часто используемые строковые функции:
1. strlen(имя_строки) – определяет длину строки без учета символа ‘\0’.
char st[21]=”Program interruption\0”;
int l;
l=strlen(st); l = =20
2. strcpy(str1,str2) – копирует строку str2 в строку str1, т. е. str2 str1.
Длина строки 1 должны быть не меньше длины строки 2.
char a[15], b[12]=”profiles”;
strcpy(a,b); a==b
3. strcat(str1,str2); - дополняет строку str1 строкой str2, т. е. str1= str1+ str2
char c[25]=”abcdef”, d[10]=”ghijklmn”
strcat(c,d); c==”abcdefghijklmn”
4. strcmp(str1,str2) – сравнение строк. Эта функция выполняет посимвольное вычитание str1-str2 и возвращает разность кодов ASCII первых двух несовпадающих символов:
strcmp(“AA”,”AA”) = = 0
strcmp(“AB”,”AA”) = = 1
strcmp(“AA”,”AB”) = = -1
Эта функция часто используется для сортировки строк по алфавиту.
8. Структуры и объединения в языке с
8.1 Описание структур
Структура – это средство для объединения нескольких разнотипных величин в одно целое. Например, данные о сотруднике фирмы:
фамилия – char[];
имя – char[];
отдел – int;
должность – char[]
зарплата – float
Способы описания структур:
1-й способ. Использование шаблона структуры:
/* Описание шаблона структуры */
struct <имя_шаблона>
{
тип1 имя_поля1;
...
типN имя_поляN;
};
/* Объявление переменных, массивов через шаблон структуры */
struct <имя_шаблона> перем1,..., перемN, массив[K];
где <имя_шаблона> - идентификатор для обозначения шаблона
типI имя_поляI – описание поля, входящего в структуру
Пример. Описать в виде структуры информацию о товарах, хранящихся на складе:
struct Рrod
{
char name[30];
int code;
float price;
int num;
};
struct Рrod pr1, pr2, mpr[20];
2-й способ. Создание нового типа данных в виде структуры.
/* Создание нового типа */
typedef stuct
{
тип1 имя_поля1;
. . .
типN имя_поляN;
} имя_типа;
/* Объявление переменных, массивов с новым типом в виде структуры */
имя_типа перем1,..., перемN, массив[k];
где typedef – это ключевое слово языка С, которое используется для создания новых (нестандартных) типов данных в программе
имя_типа – это обозначение нового типа данных в программе, имеющего вид структуры. Рекомендуется задавать имя типа с буквы Т... (от английского слова Type – тип).
Пример:
typedef struct
{
char name[30];
int code;
float price;
int num;
} TProd;
...
TProd pr1, pr2, mpr[20];
3-й способ. Одновременное описание структуры и объявление переменных, массивов
struct
{
тип1 имя_поля1;
. . .
типN имя_поляN;
} перем1,...,перемN,массив[k];
Пример:
struct
{
char name[30];
int code;
float price;
int num;
} pr1, pr2, mpr[20];
Области применения способов 1-3.
1 и 2 способы используются, когда:
а) структура является аргументом функции:
void fst(TProd a,...);
б) в разных функциях программы эта структура используется для описания переменных:
void f1(...)
{
TProd f;
...
}
void f2(...)
{
TProd g;
...
}
3-й способ применяется, когда структура используется только внутри одной функции main() или другой функции.
