- •Введение
- •Достоинства и недостатки языка c
- •Типы данных в с
- •Модификаторы
- •Константы
- •Арифметические операции
- •Логические операции
- •Оператор присваивания
- •Организация множественных выражений
- •Комбинированные операции
- •Локальные и глобальные объекты
- •Модификатор extern
- •Статические и динамические объекты
- •Регистровые переменные
- •Описание неизменяемых объектов
- •Указатели
- •Явное преобразование типа
- •Оператор if
- •Операторы циклов Оператор while
- •Оператор do ... While
- •Оператор for
- •Оператор switch (переключатель)
- •Операторы передачи управления
- •Прототипы функций
- •Передача данных в функцию
- •Структуры и определения типов пользователя
- •Битовые поля
- •Объединения
- •Псевдофункция sizeof
- •Основные директивы препроцессора
- •Основные директивы условной компиляции
- •Дополнительные данные по Turbo-c
- •Организация памяти на машинах класса pc. Виды указателей
- •Работа с указателями на функцию
- •Основные регистры общего назначения процессора
- •Модели памяти
- •Использование стека
- •Организация прерываний в программе. Модификатор volatile
- •Порядок передачи данных в функцию. Модификатор pascal
- •Передача данных в программу. Функция main
- •Разбор типовых ошибок и недочетов при программировании
- •Некоторые функции библиотеки Turbo-c
- •Функции работы с оперативной памятью эвм
- •Функции работы с клавиатурой
- •Работа с дисплеем в символьном режиме
- •Работа с дисплеем в графическом режиме
- •Функции работы с дисками
- •Функции работы с временными интервалами и звуком
- •Функции преобразования данных
- •Функции работы со строками
- •Математические функции
- •Функции работы с файлами и каталогами
- •Функции работы со временем и датой
- •Функции процессов
- •Функции работы с портами машины
- •Интерфейс с дос
- •Задачи на практические занятия
- •Литература
- •Оглавление
Функции работы со строками
1. Копирование строк. Прототип функции:
char *strcpy(char *destin, char *source);
Копируются символы source в destin, возвращаемое значение - адрес destin.
2. Присоединение строк одна к другой. Прототип функции:
char *strcat(char *destin, char *source);
Копия source добавляется в конец destin, возвращаемое значение - адрес destin.
3. Создание копии строки. Прототип функции:
char *strdup(char *str);
Создается копия str и возвращается указатель на эту вновьсоздаваемую строку.
4. Получение длины строки. Прототип функции:
unsigned strlen(char *str);
Пример вычисления длины строки:
#include <stdio.h>
#include <string.h>
main()
{
char f[80];
printf (“\nВведите строку символов\n”);
scanf(“%s”,f);
printf(“В строке\n%s\n%u символов”,f,strlen(f));
}
Математические функции
1. Вычисление синуса. Прототип функции:
double sin(double x);
2. Вычисление косинуса. Прототип функции:
double cos(double x);
3. Вычисление тангенса. Прототип функции:
double tan(double x);
4. Вычисление гиперболического синуса. Прототип функции:
double sinh(double x);
5. Вычисление гиперболического косинуса. Прототип функции:
double cosh(double x);
6. Вычисление гиперболического тангенса. Прототип функции:
double tanh(double x);
7. Вычисление экспоненты. Прототип функции:
double exp(double x);
8. Возведение x в степень y, и возведение 10 в степень x. Прототипы функций:
double pow(double x, double y);
double pow10(double x);
9. Вычисление логарифма натурального. Прототип функции:
double log(double x);
10. Вычисление логарифма десятичного. Прототип функции:
double log10(double x);
11. Вычисление корня квадратного. Прототип функции:
double sqrt(double x);
12. Вычисление абсолютного значения аргумента. Прототипы функций:
int abs(int i);
double fabs(double x);
long labs(long n);
double cabs(struct complex znum);
13. Вычисление арксинуса. Прототип функции:
double asin(double x);
14. Вычисление арккосинуса. Прототип функции:
double acos(double x);
15. Вычисление арктангенса. Прототипы функций:
double atan(double x);
double atan2(double y, double x);
Последняя функция вычисляет арктангенс от y/x.
Функции работы с файлами и каталогами
1. Изменить рабочий каталог. Прототип функции:
int chdir(char *path);
В случае успешного завершения возвращается 0.
Примеры: chdir(“c:\\turboc”); chdir(“c:/turboc”);
2. Создать каталог. Прототип функции:
int mkdir(char *pathname);
При успешной операции возвращает 0.
3. Удаление нетекущего каталога (обязательно пустого). Прототип функции:
int rmdir(char *pathname);
При успешной операции возвращает 0.
4. Получение текущего диска. Прототип функции:
int getdisk(void);
Возвращаемое значение 0-A, 1-B, 2-C и т.д.
5. Получение текущего каталога указанного диска. Прототип функции:
int getcurdir(int drive, char *direc);
где drive - имя диска (0 - текущий, 1 - A, 2-B и т.д.). В direc возвращается имя каталога, не содержащее имени диска.
При успешной операции возвращает 0.
6. Получение компонент полного имени файла. Прототип функции:
int fnsplit(char *path, char *drive, char *dir, char *name, char *ext);
Из path выделяется имя диска drive, каталог dir, имя файла name, расширение имени ext.
Возвращается в случае успеха 0.
7. Удаление файла. Прототип функции:
int unlink(char *filename);
Имя файла может быть полным. Возвращается в случае успешного завершения 0.
8. Смена атрибутов файла. Прототипы функций:
int chmod(char *filename, int permiss);
где значение permiss:
S_IWRITE - разрешение записи,
S_IREAD - только чтение,
S_IWRITE|S_IREAD - запись-чтение.
int _chmod(char *filename, int func[, int attrib]);
Если func=0, то функция возвращает MS DOS атрибуты файла, если func=1, то атрибуты устанавливаются в соответствии с attrib:
FA_RDONLY - только чтение,
FA_HIDDEN - скрытый,
FA_SYSTEM - системный,
FA_ARCH - архивный,
FA_DIREC - каталог,
FA_LABEL - метка тома.
В случае ошибки функция возвращает (-1).
9. Поиск файла с указанным именем. Прототип функции:
int findfirst(char *pathname, struct ffblk *ffblk, int attrib);
В качестве имени файла pathname можно использовать заменители * и ?. Если подходящий файл найден, структура ffblk заполняется информацией о файле. Аттрибуты устанавливаются при поиске как FA_XXX... Если указать в качестве атрибута 0, то ищутся файлы с любыми атрибутами. Функция в случае успешного поиска возвращает значение 0.
Структура ffblk:
struct ffblk {
char ff_reserved[21];
char ff_attrib;
unsigned ff_ftime;
unsigned ff_fdate;
long ff_size;
char ff_name[13]; };
10. Продолжение поиска. Прототип функции:
int findnext(struct ffblk *ffblk);
Продолжение поиска с шаблоном, указанным в функции findfirst. Если поиск успешный, возвращает 0 и заполняет структуру ffblk.
Пример удаления файла с указанным именем:
#include <stdio.h>
#include <dos.h>
#include <io.h>
main()
{
char name[80];
/* вводим имя файла */
printf(“\nВведите имя файла:\n”);
scanf(“%s”,name);
/* меняем атрибут */
if (_chmod(name,1,FA_ARCH)==-1)
{ printf(“\nОшибка при выполнении!\n”); return; }
/* удаляем файл */
unlink(name);
}