Читаем Программирование. Принципы и практика использования C++ Исправленное издание полностью

Обратите внимание на то, что результатом этих функций является число типа int (а не переменная типа char или макрос EOF). Рассмотрим типичный цикл ввода в программе на языке С.

int ch; /* но не char ch; */

while ((ch=getchar())!=EOF) { /* какие-то действия */ }

Не применяйте к потоку два последовательных вызова ungetc(). Результат такого действия может оказаться непредсказуемым, а значит, программа не будет переносимой.

Мы описали не все функции из библиотеки stdio, более полную информацию можно найти в хороших учебниках по языку С, например в книге K&R.

<p id="AutBody_Root690"><strong>Б.10.3. Строки в стиле языка С</strong></p>

Строки в стиле языка C представляют собой массивы элементов типа char, завершающиеся нулем. Эти строки обрабатываются функциями, описанными в заголовках (или ; примечание: но не ) и .

Эти функции оперируют строками в стиле языка С с помощью указателей char* (указатели const char* ссылаются на ячейки памяти, предназначенные исключительно для чтения).

Обратите внимание на то, что в языке C++ функции strchr() и strstr() дублируются, чтобы обеспечить безопасность типов (они не могут преобразовать тип const char* в тип char*, как их аналоги в языке C); см. также раздел 27.5.

Функции извлечения символов просматривают строку в стиле языка С в поисках соответственно форматированного представления числа, например "124" и "1.4". Если такое представление не найдено, функция извлечения возвращает 0. Рассмотрим пример.

int x = atoi("fortytwo"); /* x становится равным 0 */

<p id="AutBody_Root691"><strong>Б.10.4. Память</strong></p>

Функции управления памятью действуют в “голой памяти” (без известного типа) с помощью указателей типа void* (указатели const void* ссылаются на ячейки памяти, предназначенные только для чтения).

Функции malloc() и ей подобные не вызывают конструкторы, а функция free() не вызывает деструкторы. Не применяйте эти функции к типам, имеющим конструкторы или деструкторы. Кроме того, функция memset() также никогда не должна применяться к типам, имеющим конструктор.

Функции, начинающиеся с приставки mem, описаны в заголовке , а функции выделения памяти — в заголовке .

См. также раздел 27.5.2.

<p id="AutBody_Root692"><strong>Б.10.5. Дата и время</strong></p>

В заголовке можно найти несколько типов и функций, связанных с датами и временем.

Структура tm определяется примерно так:

struct tm {

  int tm_sec;   // секунда минуты [0:61]; 60 и 61

                //"високосные" секунды

  int tm_min;   // минута часа [0,59]

  int tm_hour;  // час дня [0,23]

  int tm_mday;  // день месяца [1,31]

  int tm_mon;   // месяц года [0,11]; 0 — январь (примечание: не [1:12])

  int tm_year;  // год с 1900- го года ; 0 — 1900-й год,

                // 102 — 2002-й год

  int tm_wday;  // дни, начиная с воскресенья [0,6]; 0 — воскресенье

  int tm_yday;  // дней после 1 января [0,365]; 0 — 1 января

  int tm_isdst; // часы летнего времени

};

Функции для работы с датами и временем

clock_t clock();  // количество тактов таймера после старта программы

time_t time(time_t* pt);  // текущее календарное

                          // время

double difftime(time_t t2, time_t t1); // t2–t1 в секундах

tm* localtime(const time_t* pt); // локальное время для *pt

tm* gmtime(const time_t* pt);    // время по Гринвичу (GMT) tm для

                                 // *pt или 0

time_t mktime(tm* ptm);       // time_t для *ptm или time_t(–1)

char* asctime(const tm* ptm); // представление *ptm в виде

                              // C-строки

char* ctime(const time_t* t) { return asctime(localtime(t)); }

Пример результата вызова функции asctime(): "Sun Sep 16 01:03:52 1973\n".

Рассмотрим пример использования функции clock для измерения времени работы функции (do_something()).

int main(int argc, char* argv[])

{

  int n = atoi(argv[1]);

  clock_t t1 = clock(); // начало отсчета

Перейти на страницу:

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных