Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

utime

[ Оглавление ]
               UTIME
            
            #include <sys\types.h>
         
            #include <sys\utime.h>
            
            int utime(pathname, times);
            char *pathname;                  path-имя файла
            struct utimbuf *times;           указатель на хранимые
                                             значения времени
            
               Описание.
            
               Функция utime устанавливает время модификации файла,  кото-
         рый  определяется по pathname. Процесс должен иметь доступ по за-
         писи к файлу, иначе   время не будет изменяться.
               Поскольку структура utimbuf содержит поле времени  доступа,
         в MS DOS устанавливается только время модификации.
               Если  times является NULL-указателем, время модификации ус-
         танавливается по текущему времени. Иначе  times должно  указывать
         на  структуру  типа utimbuf, определенную в <sys\utime.h>. В этой
         структуре время модификации устанавливается из поля modtime.
            
               Возвращаемое значение.
            
               Функция utime возвращает значение 0, если время модификации
         было изменено. Возвращаемое значение -1 свидетельствует об  ошиб-
         ке  и errno устанавливается в одно из следующих значений:
            
            ЗНАЧЕНИЕ                     ЕГО СМЫСЛ
            
            EACCES           Path-имя  файла определяет директорий
                             или файл, предназначенный только  для
                             чтения.
                             
            EMFILE           Существует   много   открытых  файлов
                             (файл  должен   быть   открытым   для
                             изменения времени его модификации).
                             
            ENOENT           Файл или path-имя не найдено.
            
               См.  также asctime, ctime, fstat, ftime, gmtime, localtime,
         stat, time.
            
      
               Пример.
            
            #include <sys\types.h>
            #include <sys\utime.h>
            #include <stdio.h>
            #include <stdlib.h>
            
               /* Время модификации файла устанавливается по текущему вре-
         мени */
            
            if (utime("/tmp/data", NULL) == -1)
                     perror ("utime failed").
            
      
         
            
               VA_ARG - VA_START
            
            #include <varargs.h>           требуется          для
                                           совместимости с UNIX V.
            
            #include<stdarg.h>             требуется          для
                                           совместимости       со
                                           стандартом   ANSI   C.
            
            void  va_start(arg-ptr);       макро   для   установки
                                           arg-ptr    к     началу
                                           списка   необязательных
                                           аргументов      (только
                                           версия <varargs.h>).
            
            void va_start(arg-ptr, prev-param);
                                           макро   для   установки
                                           arg-ptr к началу списка
                                           необязательных    аргу-
                                           ментов  (только  версия
                                           <stdarg.h>).
            
            type va_start(arg-ptr, type);  макро  для  возвращения
                                           текущего аргумента
            
            void va_arg(arg-ptr);          макро для переустановки
                                           arg-ptr
            
            va_list arg-ptr;               указатель   на   список
                                           аргументов;
            type                           тип       возвращаемого
                                           аргумента;
            prev-param                     параметр, предшедствую-
                                           щий             первому
                                           необязательному   аргу-
                                           менту  (только   версия
                                           <stdarg.h>).
            
            va_alist                       имя параметра для вызы-
                                           ваемой  функции (только
                                           версия <varargs.h>).
            
            va_dcl                         объявление     va_alist
                                           (только          версия
                                           <varargs.h>).
            
               Описание.
            
               Макро va_start, va_arg, va_end обеспечивают способ  доступа
         к  аргументам  функции, когда она принимает переменное количество
         аргументов.
               Доступны  2 версии макро: макро, объявленные в <varargs.h>,
         которые совместимы с определением системы UNIX 5, и макро, объяв-
         ленные в <stdarg.h>, которые приведены в соответствии со стандар-
         
         том ANSI C.
               Обе версии макро предполагают, что функция принимает фикси-
         рованное число требуемых аргументов, следующее за переменным чис-
         лом необязательных аргументов. Требуемые аргументы объявлены  как
         необязательные  параметры для функций и могут быть доступны через
         имена параметров. Необязательные аргументы доступны  через  макро
         <varargs.h>  или  <stdarg.h>,  которые устанавливают указатель на
         первый необязательный аргумент в  списке  аргументов;  возвращают
         аргументы из списка и переустанавливают указатель, когда обработ-
         ка аргументов завершена.
               Макро  системы UNIX 5, объявленные в <varargs.h>, использу-
         ются как показано ниже.
            
               1. Любые требуемые параметры для функции могут быть  объяв-
         лены обычным способом как параметры.
               2.  Последний параметр для функции представляет список нео-
         бязательных аргументов. Этот параметр должен быть назван va_alist
         (не  перепутайте  его  с  va_list,  который  объявлен   как   тип
         va_alist).
               3. Макро va_dcl появляется после объявления функции и перед
         открытой  левой скобкой функции. Эта макро объявляется как полное
         описание параметра va_alist, оканчивающегося  точкой  с  запятой,
         однако, за va_dcl не может идти точка с запятой.
               4.  Внутри  функции  макро va_start устанавливает arg-ptr к
         началу списка необязательных параметров, который передается функ-
         ции. Макро va_start должна использоваться перед va_arg, использу-
         емой в первый раз. Аргумент arg-ptr должен иметь тип va_list.
               5. Макро va_arg выполняет следующее:
               * возвращает значение заданного типа type из того  располо-
         жения, которое определяется по аргументу arg-ptr;
               *  увеличивает arg-ptr, чтобы указать на следующий аргумент
         в списке, используя размер type для определения начала расположе-
         ния следующего аргумента.
               Внутри функций макро va_arg может использоваться любое  ко-
         личество раз, чтобы возвратить требуемые аргументы из списка.
               6.  После возвращения всех аргументов  va_end устанавливает
         указатель в NULL.
            
               Макро, предлагаемые  стандартом  ANSI  C  и  объявленные  в
         <stdarg.h>,  незначительно отличаются от макро, которые объявлены
         в <varargs.h>.
               1. Все требуемые аргументы для функции объявляются как  па-
         раметры. Макро va_dcl не используется вместе с макро <stdarg.h>.
               2.  Макро va_start устанавливает arg-ptr на первый необяза-
         тельный аргумент из списка аргументов, который  передается  функ-
         ции.   Аргумент   arg-prt  должен  иметь  тип  va_list.  Аргумент
         prev-param является именем требуемого параметра,  непосредственно
         предшедствующего  первому необязательному параметру из списка ар-
         гументов. Макро va_start должна быть использована  перед  va_arg,
         используемой в первый раз.
               3. Макро va_arg выполняет следующее:
               * возвращает значение типа type из того расположения, кото-
         рое определяется по аргументу arg-ptr.
               *  чтобы указать на следующий аргумент в списке, она увели-
         чивает arg-ptr и использует размер type  для  определения  начала
         
         расположения следующего аргумента.
               Внутри  функций макро va_arg может использоваться любое ко-
         личество раз, чтобы возвратить требуемые аргументы из списка.
               4. После возвращения всех аргументов, va_end переустанавли-
         вает указатель в NULL.
            
               Возвращаемое значение.
      
               Макро va_arg возвращает текущий аргумент; va_start и va_end
         значений не возвращают.
               См. также vfprintf, vprintf, vsprintf.
            
               Пример:
            
               Ниже приводится листинг программы, использующей <varargs.h>
         для совместимости с UNIX V.
            
            #include <stdio.h>
            #include <varargs.h>
            
            main()
            {
                   int n;
                   .
                   .
                   .
               /* вызывается функция 4-х  аргументов;  последний  аргумент
         задается равным -1, чтобы отметить конец списка аргументов */
            
                   n = average(2, 3, 4, -1);
            printf("Average is: %d\n", n);
                   .
                   .
                   .
               /*  вызывается  функция 5-ти аргументов; последний аргумент
         задается равным -1, чтобы отметить конец списка аргументов */
            
                   n = average(5, 7, 9, 11, -1);
            printf("Average is: %d\n", n);
            }
            
            average(va_alist)
            va_dcl
              {
                 int i = 0, count = 0, sum = 0;
                 va_list arg_marker;
            
                 va_start(arg_marker);
            
               /* возвращение аргументов и прибавление к sum, пока не вст-
         ретится последний аргумент -1. */
      
             for (; (i = va_arg(arg_marker, int)) >= 0;
                         sum+=i, count++)
                              ;
         
                 return (count ? (sum/count) : count);
              }.
            
            
               Аналогичная  программа, перезаписанная для совместимости со
         стандартом ANSI C.
            
            #include <stdio.h>
            #include <stdarg.h>
            
            main()
            {
                   int n;
                   .
                   .
                   .
               /* вызывается функция 4-х  аргументов;  последний  аргумент
         задается равным -1, чтобы отметить конец списка аргументов */
            
                   n = average(2, 3, 4, -1);
            printf("Average is: %d\n", n);
                   .
                   .
                   .
               /*  вызывается  функция 5-ти аргументов; последний аргумент
         задается равным -1, чтобы отметить конец списка аргументов */
            
                   n = average(5, 7, 9, 11, -1);
            printf("Average is: %d\n", n);
            }
            
            average(first)
            int first;
              {
                 int i = 0, count = 0, sum;
                 va_list arg_marker;
            
                 va_start(arg_marker, first);
            
               /* первый  аргумент  прибавляется  к  sum  и  увеличивается
         count; если первый аргумент равен -1, происходит возврат */
            
                 if (first != -1)
                      sum = first;
                 else
                      return (0);
                 count++;
               /*  возвращение  дополнительных  аргументов и прибавление к
         sum, пока не встретится последний аргумент -1. */
            
                 for (; (i = va_arg(arg_marker, int)) >= 0;
                         sum+=i, count++)
                              ;
                 return (sum/count);
              }.
         

      
      

Оставить комментарий

Комментарий:
можно использовать BB-коды
Максимальная длина комментария - 4000 символов.
 
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог