Лекция 2 Функции библиотек языка C stdio.h • Заголовочный файл стандартной библиотеки языка C. • Содержит определения констант, объявления функций и типов для операций ввода/вывода. printf() и scanf() • printf() – функция позволяет выводить на экран информацию согласно заданному формату. • scanf() – функция позволяющая считывать с клавиатуры информацию согласно заданному формату. Форматы printf и scanf • • • • • • • • %d – десятичный вывод (int) %ld – десятичный длинный вывод (long int) %u – десятичный (unsigned int) %o – восьмеричный (octet) %f или %g – дробный %6d – печатать в 6 позиций %.2f – печатать 2 знака после запятой %6.2f – печатать 2 знака после запятой в поле на 6 позиций • %s – (строка char[]) вывод любого массива символов до завершающего нуля Форматы printf и scanf Escape-последовательности Экранирующие последовательности • \n – new line • \r – возврат каретки • \t – табуляция • \b – backspace • \" и \' – кавычки • \\ – символ \ • \a – alarm (звуковой сигнал) Сложение двух чисел #include <stdio.h> int main () { int a, b; printf ("Введите два числа: "); scanf ("%d%d", &a, &b); printf ("%d\n", a + b); return 0; } Математические функции • В <math.h> описано множество математических функций. Входные и выходные данные типа double. sin(х) cos(x) atan2(y, х) ехр(х) log(x) log10(x) pow(x, y) sqrt(х) синус х, х в радианах. косинус х, х в радианах. арктангенс y/х, y и х в радианах. экспоненциальная функция еx. натуральный (по основанию е) логарифм х (х>0). обычный (по основанию 10) логарифм х (х > 0). степень xy. корень квадратный х (х > 0). fabs(x) абсолютное значение x. ctype.h В <ctype.h> описаны функции для проверки и изменения символьной информации: • isalpha(c); – возвращает не нулевое значение, если аргумент является буквой • isdigit(c); – возвращает не нулевое значение, если аргумент является цифрой • isspace(c); – возвращает не нулевое значение, если аргумент является пробельным символом (' ', '\t', '\n', '\r' и др.) • islower(c); – возвращает не нулевое значение, если аргумент является символом в нижнем регистре • isupper(c); – возвращает не нулевое значение, если аргумент является символом в верхнем регистре • toupper(c); – переводит символ в верхний регистр • tolower(c); – переводит символ в нижний регистр Ввод символов через getchar() • Стандартная библиотека включает несколько функций для чтения и записи одного символа. Простейшие из них — getchar и putchar. За одно обращение к getchar считывается следующий символ ввода из текстового потока, и этот символ выдается в качестве результата. Так, после выполнения с = getchar() переменная c содержит очередной символ ввода. Вывод символов через putchar() • Обращение к putchar приводит к печати одного символа. Так, putchar(c) напечатает содержимое целой переменной c в виде символа (обычно на экране). Вызовы putchar и printf могут произвольным образом перемежаться. Вывод будет формироваться в том же порядке, что и обращения к этим функциям. Константа EOF • EOF является индикатором операционной системы, означающим, что данные в источнике закончились. Источниками данных обычно являются файлы и потоки. • EOF (аббревиатура от end of file — конец файла) — целая константа, определенная в <stdio.h>. Какое значение имеет эта константа — неважно, лишь бы оно отличалось от любого из возможных значений типа char. • Для указания терминалу в UNIX и LINUX «EOF» следует воспользоваться комбинацией клавиш Ctrl+D. В Windows — Ctrl+Z. Копирование ввода на вывод 1 #include <stdio.h> int main() { int c; c = getchar(); while (c != EOF) { putchar (c); c = getchar(); } return 0; } Копирование ввода на вывод 2 #include <stdio.h> int main() { int c; while ((c = getchar()) != EOF) putchar (c); return 0; } Подсчёт символов 1 #include <stdio.h> int main() { long nc; nc = 0; while (getchar() != EOF) ++nc; printf ("%ld\n", nc); return 0; } Подсчёт символов 2 #include <stdio.h> int main() { double nc; for (nc = 0; getchar() != EOF; ++nc) ; printf ("%.0f\n", nc); return 0; } Подсчет строк входного потока #include <stdio.h> int main() { int с, nl; nl = 0; while ((с = getchar()) != EOF) if (c == '\n') ++nl; printf ("%d\n", nl); return 0; } Таблица ASCII