Шпаргалка по языку СИ. Конспект Лекций «программирование На Языке Высокого Уровня Си» П. Конспект лекций для студентов высших учебных заведений, обучающихся по специальности 230102. 65 Автоматизированные системы обработки информации и управления
Скачать 1.25 Mb.
|
ULLONG_MAX максимальное значение для беззнакового long long int +18,446,744,073,7 09,551,615 +18,446,744,073,70 9,551,615 ≥ +18,446,744,073,709,551,61 5 Таблица 25. Состав библиотеки limits.h Константа Значение Стандарты SIGHUP Отбой POSIX SIGINT Прерывание ANSI SIGQUIT Выход POSIX SIGILL Недопустимая инструкция ANSI SIGABRT Самоостановка ANSI SIGTRAP Перехват события POSIX SIGIOT Перехват ввода-вывода 4.2 BSD SIGEMT Перехват эмуляции 4.2 BSD SIGFPE Исключение с плавающей запятой ANSI SIGKILL Неперехватываемый сигнал завершения POSIX 171 SIGBUS Ошибка шины 4.2 BSD SIGSEGV Нарушение сегментации ANSI SIGSYS Неправильный аргумент в системный вызов 4.2 BSD SIGPIPE Нарушение канала POSIX SIGALRM Истечение времени POSIX SIGTERM Заверешние ANSI SIGUSR1 Пользовательский сигнал 1 POSIX SIGUSR2 Пользовательский сигнал 2 POSIX SIGCHLD Изменение статуса дочернего процесса POSIX SIGCLD Аналогично SIGCHLD System V SIGPWR Перезапуск после проблемы с питанием System V SIGXCPU Ограничение процессорного времени POSIX Таблица 26. Состав библиотеки math.h Имя функции Описание acos арккосинус asin арксинус atan арктангенс atan2 арктангенс с двумя параметрами ceil округление до ближайшего большего целого числа cos косинус cosh гиперболический косинус exp вычисление экспоненты fabs абсолютная величина (числа с плавающей точкой ) floor округление до ближайшего меньшего целого числа fmod вычисление остатка от деления нацело для чисел с плавающей точкой frexp разбивает число с плавающей точкой на мантиссу и показатель степени. ldexp умножение числа с плавающей точкой на целую степень двух log натуральный логарифм log10 логарифм по основанию 10 modf(x,p) извлекает целую и дробную части (с учетом знака) из числа с плавающей точкой pow(x,y) результат возведения x в степень y, xy sin синус sinh гиперболический синус sqrt квадратный корень tan тангенс tanh гиперболический тангенс Таблица 27. Состав библиотеки stdio.h Имя функции Описание Функции для файловых операций fclose закрывает файл, ассоциированный с переданным ей значением FILE * fopen, freopen, fdopen открывают файл для определенных типов чтения и записи remove удаляет файл (стирая его) rename переименовывает файл 172 rewind работает аналогично fseek(stream, SEEK_SET), вызванному для потока, со сбросом индикатора ошибок tmpfile создает и открывает временный файл, удаляемый при закрытии через fclose() Функции для операций ввода-вывода clearerr очищает EOF и индикаторы ошибок для данного потока feof проверяет, установлен ли индикатор EOF для данного потока ferror проверяет, установлен ли индикатор ошибок для данного потока fflush принудительно записывает вывод, предназначенный для помещения в буфер, в файл, ассоциированный с данным потоком fgetpos сохраняет позицию указателя файла потока, ассоциированный с его первым аргументом (FILE *), в его второй аргумент (fpos_t *) fgetc возвращает один символ из файла fgets получает строку из файла (оканчивающуюся символом перевода строки или конца файла) fputc записывает один символ в файл fputs записывает строку в файл ftell возвращает указатель позиции файла, который может быть передан fseek fseek производит поиск по файлу fsetpos устанавливает указатель позиции файла потока, ассоциированный с его первым аргументом (FILE *), как хранимый во втором его аргументе (fpos_t *) fread читает данные из файла fwrite записывает данные в файл getc считывает и возвращает символ из данного потока и изменяет укащатель позиции файла; позволяет использоваться как макрос с теми же эффектами, что и fgetc , кроме того, что может вычислять поток более одного раза getchar имеет аналогичный эффект, что и getc(stdin) gets считывает символы из stdin до символа перевода строки и хранит их в своем единственном аргументе printf, vprintf используются для вывода в стандартный поток вывода fprintf, vfprintf используются для вывода в файл sprintf, snprintf, vsprintf используются для вывода в массив типа char ( Строка в языке Си ) perror записывает сообщение об ошибке в stderr putc записывает и возвращает символ в поток и изменяет указатель позиции файла на него; можно использовать как макрос с теми же свойствами, что и fputc , кроме того, что он может обрабатывать поток более одного раза putchar, fputchar аналогичны putc(stdout) scanf, vscanf используются для ввода из стандартного потока ввода fscanf, vfscanf используются для ввода из файла sscanf, vsscanf используются для ввода из массива char (то есть Строка в языке Си ) setvbuf устанавливает режим буферизации для данного потока tmpnam создает временное имя файла ungetc помещает символ обратно в поток 173 puts выводит символьную строку в stdout Таблица 28. Состав библиотеки stdlib.h Имя функции Описание Реализация abort Ненормальное завершение программы void abort(void); abs Модуль целого числа int abs(int i); assert Макроопределение для вывода отладочных диагностических сообщений void assert(int expression); atexit Запрос вызова функции при завершении работы программы int atexit(void (*function)(void); atof, atoff Преобразование строки в значение типа double или float double atof(const char *s); float atoff(const char *s); atii, atol Строка в целое int atoi(const char *s); long atol(const char *s); atol Преобразовывает строку в long long atol(const char *s); bsearsh Двоичный поиск void *bsearch(const void *key, const void *base, size_t nmemb, size_t size, int (*compar)(const void *, const void *)); calloc Выделяет пространство для массивов void *calloc(size_t n, size_t s); void *calloc_r(void *reent, size_t div Деление двух целых div_t div(int n, int d); ecvt, ecvtf, fcvt, fcvtf Преобразование double или float в строку char *ecvt(double val, int chars, int *decpt, int *sgn); char *ecvtf(float val, int chars, int *decpt, int *sgn); gvcvt, gcvtf Форматируют double и float как строку char *gcvt(double val, int precision, char *buf); char *gcvtf(float val, int precision, char *buf); ecvtbuf, fcvtbuf Double или float в строку char *ecvtbuf(double val, int chars, int *decpt, int *sgn, char *buf); char *fcvtbuf(double val, int decimals, int *decpt, int *sgn, char *buf); exit Завершение выполнения программы void exit(int code); getenv Поиск переменной окружения char *getenv(const char *name); labs Модуль длинного целого long labs(long i); ldiv Деление двyх длинных целых ldiv_t ldiv(long n, long d); malloc, realloc, free Управление памятью void *malloc(size_t nbytes); void *realloc(void *aptr, size_t nbytes); void free(void *aptr); mbtowc Минимальный преобразователь мультибайтов в широкие символы int mbtowc(wchar_t *pwc, const char *s, size_t n); qsort Сортировка массива void qsort(void *base, size_t nmemb, size_t size,int (*compar)(const void *, const void *) ); 174 rand, srand Псевдо-случайные числа int rand(void); void srand(unsigned int seed); int _rand_r(void *reent); void _srand_r(void *reent, unsigned int seed); strtod, strtodf Строка в double или float double strtod(const char *str, char **tail); float strtodf(const char *str, char **tail); double _strtod_r(void *reent, const char *str, char **tail); strtol Строка в long ong strtol(const char *s, char **ptr,int base); strtoul Строка в unsigned long unsigned long strtoul(const char *s, char **ptr, int base); system Выполняет командную строку int system(char *s); int _system_r(void *reent, char *s); wctomb Минимальный преобразователь широких символов в мультибайты int wctomb(char *s, wchar_t wchar); Таблица 29. Состав библиотеки string.h Имя функции Описание void * memcpy (void *dest, const void *src, size_t n); Копирует n байт из области памяти src в dest, которые не должны пересекаться, в противном случае результат неопределен (возможно как правильное копирование, так и нет) void * memmove (void *dest, const void *src, size_t n); Копирует n байт из области памяти src в dest, которые в отличие от memcpy могут перекрываться void * memchr (const void *s, char c, size_t n); Возвращает указатель на первое вхождение c в первых n байтах s, или NULL, если не найдено int memcmp (const void *s1, const void *s2, size_t n); Сравнивает первые n символов в областях памяти void * memset (void *, int z, size_t); Заполняет область памяти одним байтом z char * strcat (char *dest, const char *src); Дописывает строку src в конец dest char * strncat (char *, const char *, size_t); Дописывает не более n начальных симолов строки src (или всю src, если ее длина меньше) в конец dest char * strchr (const char *, int); Ищет символ в строке, начиная с головы и возращает его адрес, или NULL если не найден char * strrchr (const char *, int); Ищет символ в строке, начиная с хвоста и возращает его адрес, или NULL если не найден int strcmp (const char *, const char *); Лексикографическое сравнение строк int strncmp (const char *, const char *, size_t); Лексикографическое сравнение первых n байтов строк int strcoll (const char *, const char *); Лексикографическое сравнение строк с учетом локали collating order char * strcpy (char *toHere, const char *fromHere); Копирует строку из одного места в другое 175 char * strncpy (char *toHere, const char *fromHere, size_t); Копирует до n байт строки из одного места в другое char * strerror (int); Возвращает строковое представление сообщения об ошибке errno (не потоко-безопасная) size_t strlen (const char *); Возвращает длину строки size_t strspn (const char *s, const char *accept); Определяет максимальную длину начальной подстроки, состоящей исключительно из байтов, перечисленных в accept size_t strcspn (const char *s, const char *reject); Определяет максимальную длину начальной подстроки, состоящей исключительно из байтов, не перечисленных в reject char * strpbrk (const char *s, const char *accept); Находит первое вхождение любого символа, не перечисленного в accept char * strstr (const char *haystack, const char *needle); Находит первое вхождение строки needle в haystack char * strtok (char *, const char *); Преобразует строку в последовательность токенов. Не потоко-безопасная, нереентрантная. size_t strxfrm (char *dest, const char *src, size_t n); Создает оттранслированную копию строки, такую, что дословное сравнение ее (strcmp) будет эквивалентно сравнению с коллатором. Таблица 30. Состав библиотеки time.h Имя функции Описание int tm_sec; Секунды от начала минуты (0,61) int tm_min; Минуты от начала часа (0,59) int tm_hour; Часы от полуночи (0,23) int tm_mday; Число месяца (1,31) int tm_mon; Месяцы после января (0,11) int tm_year; Годы с 1900 int tm_wday; Дни с воскресенья (0,6) int tm_yday; Дни с первого января (0,365) int tm_isdst; Признак летнего времени Приложение 2. Примеры реализации алгоритмов Пример 1. Дано 10 чисел. Определить, какие из них больше своих соседей. #include #include int main() { int arr[10]; // Массив arr из 10 целочисленных элементов int i; // Счетчик для циклов for (i = 0; i < 10; i++) // Вводим элементы массива { printf("Введите %d элемент массива : ", i); scanf("%d",&arr[i]); } 176 for (i = 1; i <= 8; i++) // Перебираем все элементы массива от 1 до 8 { /* Сравниваем элемент с предыдущим и слудующим. Если элемент больше, то выводим его на экран */ if(arr[i] > arr[i-1] && arr[i] > arr[i+1]) printf("\nЭлемент %d больше своих сосдей : %d\n",i,arr[i]); } system("pause"); } Результат выполнения программы Введите 0 элемент массива : 1 Введите 1 элемент массива : 3 Введите 2 элемент массива : 4 Введите 3 элемент массива : 5 Введите 4 элемент массива : 2 Введите 5 элемент массива : 8 Введите 6 элемент массива : 6 Введите 7 элемент массива : 10 Введите 8 элемент массива : 5 Введите 9 элемент массива : 1 Элемент 3 больше своих сосдей : 5 Элемент 5 больше своих сосдей : 8 Элемент 7 больше своих сосдей : 10 Пример 2. Напечатать заданный непустой текст, удалив из него все цифры. #include #include #include int main() { int i; char z; // Текущий вводимый символ printf (“\nНапишите предложение с точкой в конце:\n”); /* Пока не встретилась точка считываем символы. Если встретилась цифра, заканчиваем итерацию цикла, иначе выводим символ */ for (i = 0, z = 'a'; z != '.'; i++) { scanf ("%c", &z); if (z == '0' || z == '1' || z == '2' || z == '3' || z == '4') continue; if (z == '5' || z == '6' || z == '7' || z == '8' || z == '9') continue; printf (“Полученный текст : “); printf ("%c\n", z); } system ("pause"); } Результат выполнения программы Напишите предложение с точкой в конце: З2д3е6с8ь0 н76е9т 2н5и о8д0н7ой 3ц6и6фры4 Полученный текст : Здесь нет ни одной цифры Пример 3. Определить, находится ли точка внутри шара? #include #include 177 #include typedef struct { float x; float y; float z; float R; } shar; typedef struct { float x; float y; float z; } tochka; int main() { shar S; tochka T; printf ("\n Введите координаты шара: x,y,z,R "); scanf ("%f %f %f %f",&S.x,&S.y,&S.z,&S.R); printf ("\n Введите координаты точки:x,y,z "); scanf ("%f %f %f", &T.x,&T.y,&T.z); if ((T.x-S.x)*(T.x-S.x)+(T.y-S.y)*(T.y-S.y)+(T.z-S.z)*(T.z-S.z)<=S.R*S.R) printf ("\n Точка находится в шаре!"); else printf ("\n Точка не находится в шаре!"); getch(); } Результат выполнения программы Введите координаты шара: x,y,z,R 0 0 0 2 Введите координаты точки:x,y,z 1 1 1 Точка находится в шаре! Пример 4. Вычисление периода дроби. #include #include #include #include // объявление переменных int m,n; int* ostatki; int* period; unsigned int len; // проверка остатков int IsInOstatki(int ost, int len) { //len-1 чтоб не проверять остаток, ввденый на текущем шаге for (int i = 0; i < len - 1; i++) { if (ostatki[i] == ost) return i; } 178 |