Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
шпоры оп.docx
Скачиваний:
4
Добавлен:
25.09.2019
Размер:
116.07 Кб
Скачать
  1. Использование typedef

С помощью ключевого слова typedef можно определить новое имя данных. Новый тип при этом не создается, просто уже существующий тип получит новое имя.

Общий вид операторв typedef:

typedef тип имя;

Тип- допутимый тип, имя-псевдоним этого типа.

Например, float можно переименовать следующим образом:

typedef float balance;

  1. Ввод, вывод, потоки и файлы

Потоки и файлы

Система ввода-вывода С поддерживает постоянный интерфейс независимо от устройства, к которому обращается программист. То есть система ввода-вывода С предоставляет уровень абстракции между программистом и аппаратурой. Данная абстракция называется потоком, а собственно устройство называется файлом. Все потоки схожи своим поведением. Существует два типа потоков: текстовые и двоичные.

Текстовые потоки

Текстовые потоки – это последовательности символов. В текстовых потоках некоторые символы могут преобразовываться согласно требованиям среды.

Двоичные потоки

Двоичные потоки – это последовательности байт, имеющих однозначное соответствие с байтами во внешнем устройстве. Тем не менее, может добавляться некоторое количество нулевых байт к двоичному потоку. Эти нулевые байты могут использоваться для унификации представления информации, например для заполнения сектора диска.

Файлы

В С файлы – это логическая концепция, применимая ко всему, начиная от дисковых файлов и заканчивая терминалами. Поток связывается с конкретным файлом с помощью операции открытия. Если файл открыт, то может осуществляться обмен между файлом и программой.

Не все файлы имеют одинаковые возможности.

В начале работы программы по стандарту ANSI C открыты три предопределённых текстовых потока: stdin, stdout, stderr.

Поток

Устройство

stdin

Клавиатура

stdout

Экран

stderr

Экран

  1. Форматированный консольный ввод-вывод

Стандартная библиотека С содержит две функции, выполняющие форматированный ввод и вывод стандартных типов данных: printf() и scanf().Функция printf() используется для вывода данных на консоль, scanf() – для чтения данных с консоли. Как printf(), так и scanf() могут работать с любыми стандартными типами, включая символы, строки и числа.

Функция printf() имеет следующий прототип:

int printf(const char * форматная_строка, …);

Первый аргумент форматная_строка определяет способ вывода последующих аргументов. Он содержит два типа элементов: символы, выводимые на экран, и спецификаторы формата, определяющие способ вывода аргументов, следующих за форматной строкой.

Код

%c

%d

%i

%e

%E

%f

%g

%G

%o

%s

%u

%x

%X

%p

%n

%%

Формат

Символ

Знаковое десятичное целое число

Знаковое десятичное целое число

Научная нотация (e – строчная)

Научная нотация (E – строчная)

Десятичное число с плавающей точкой

Использует или %e, или %f, соответствующее более короткому представлению

Использует или %E, или %f, соответствующее более короткому представлению

Беззнаковое восьмеричное число

Строка символов

Беззнаковое десятичное число

Беззнаковое шестнадцатиричное число (строчные буквы)

Беззнаковое шестнадцатиричное число (прописные буквы)

Вывод указателя

Ассоциированный аргумент – это указатель на целое, в которое записывается число уже выведенных символов

Выводит знак %

Функция printf() возвращает число напечатанных символов. В случае ошибки она возвращает EOF.Стандартный ввод с консоли, как правило, осуществляется с помощью scanf(). Она читает все стандартные типы данных и автоматически преобразует числа к правильному внутреннему формату. Стандартный вид scanf() следующий:

int scanf(const char * форматная_строка, …);

форматная_строка определяет способ чтения значений в переменные, на которые указывает список аргументов. Форматная строка состоит из трёх типов символов:

  • Спецификаторы формата

  • Специальные символы

  • Стандартные символы

Спецификаторы формата перечислены в таблице

Код

%c

%d

%i

%e

%f

%g

%o

%s

%x

%p

%n

%u

%[]

Значение

Читает одиночные символы

Читает десятичное число

Читает десятичное число

Читает число с плавающей запятой

Читает число с плавающей запятой

Читает число с плавающей запятой

Читает восьмеричное число

Читает строку

Читает шестнадцатиричное число

Читает указатель

Получает целочисленное значение, равное числу прочитанных символов

Читает беззнаковое целое

Сканирует множество символов

В scanf() следует передавать адреса. Это означает, что все аргументы должны быть указателями на переменные. Например, для чтения целого в переменную count надо использовать следующий вызов scanf():

scanf(“%d”, &count);

Печать символов

Для печати отдельных символов используется %c. Для печати строки %s.

Вывод чисел

Пример

#include <stdio.h>

int main(void)

{

double f;

for(f=1.0; f<1.0e+10; f=f*10)

printf("%g ", f);

getchar();

unsigned int num;

for(num=0; num<255; num++) {

printf("%o ", num);

printf("%x ", num);

printf("%X ", num);

}

getchar();

return 0;

}

Вывод адресов

Пример

#include <stdio.h>

int main(void)

{

/* Вывод адресов */

int sample;

printf("%p ", &sample);

getchar();

return 0;

}

Опциональные префиксы для целых чисел

Код

Значение

h

Короткое целое short

l

Длинное целое long

ll

Дважды длинное целое long long

I32

Тип __int32

I64

Тип __int64