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

Ваш аккаунт

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

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

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

write

[ Оглавление ]
               WRITE
            
            #include<io.h>       требуется только  для  объявления
                                 функции
            
            int write (handle, buffer, count);
            int handle;          handle-р, ссылающийся на открытый
                                 файл
            char *buffer;       записываемые данные
            unsigned int count; число байтов
            
               Описание.
            
               Функция write записывает байты count  из  буфера  buffer  в
         файл, связанный с handle. Операции write начинаются с текущей по-
         зиции  указателя  на файл (указатель ассоциирован с заданным фай-
         лом). Если файл открыт для добавления, операции выполняются в ко-
         нец файла. После осуществления операций записи указатель на  файл
         (если он есть) увеличивается на количество действительно записан-
         ных байтов.
            
               Возвращаемое значение.
                            
               Функция  write  возвращает  число  действительно записанных
         байтов. Возвращаемое значение должно быть положительным, но мень-
         ше числа count (например, когда размер для  записи  count  байтов
         выходит  за пределы пространства на диске). Возвращаемое значение
         -1 указывает на ошибку; errno устанавливается в одно из следующих
         значений:
            
            ЗНАЧЕНИЕ            ЕГО СМЫСЛ
            
            EACCES           файл открыт для чтения или закрыт для
                             записи
            
            EBADF            неверный handle-р файла
         
            
            ENOSPC           на устройстве нет свободного места
            
               Если в файл записано более 32К  (максимальный   размер  для
         типа  int),  возвращаемое  значение  будет иметь тип unsigned int
         (см.нижеследующий пример). Однако, максимальное число  записывае-
         мых байтов в файл равно 65534; поскольку число 65535 является не-
         отличимым  от -1, то возвращается ошибка. Если заданный файл отк-
         рыт в текстовом режиме, каждый символ "Перевод строки" на  выходе
         заменяется  парой "Возврат каретки-Перевод строки". Эта замена не
         влияет на возвращаемое значение.
               См.также fwrite, open, read.
            
               Замечание. При записи в файл, открытый в текстовом  режиме,
         символ  трактуется как логический конец файла. При записи на уст-
         ройство символ в буфере влияет на окончание #include<io.h>.
      
            #include<stdio.h>
            #include<fcntl.h>
            
            char buffer [60000];
      
            main ()
           
               {
               int fh;
               unsigned int nbytes = 60000, byteswritten;
            
               if ((fh=open("c:/data/conf.dat",O_WRONLY))==-1) {
                   perror("open failed on output file");
                   exit (1);
                   }
               if ((byteswritten=write(fh,buffer,nbytes))==-1)
                   perror ("");
               else
                 printf("Wrote %u bytes to file\n",byteswritten);
               .
               .
               .
               }
.
                                      - 260 -
         
         
               
               
                
                                
                                                  П Р И Л О Ж Е Н И Е
                                                  
               
                               Сообщения об ошибках
            
            
               1. Введение
                
                
               В этом приложении содержится список и описание значений,  в
         которые устанавливается переменная errno, если при вызове библио-
         течной  процедуры возникает ошибка. Заметим, что некоторые проце-
         дуры сами устанавливают переменную errno.  Сообщения  об  ошибках
         связаны с каждым значением errno. Эти сообщения и сообщения, пос-
         тавляемые пользователями, печатаются посредством применения функ-
         ции perror.
               Значение errno отражает соответствующее значение ошибки для
         того  вызова, в котором установлено errno. Значение errno автома-
         тически не убирается. Поэтому, чтобы получить правильные  резуль-
         таты работы программы, нужно сразу же после вызова этой программы
         проверять  ее  на  ошибки и печатать соответствующие сообщения об
         ошибках .
               Include-файл <erno.h> содержит объявления  значений  errno.
         Однако  в  MS  DOS  используются  не  все  объявления, заданные в
         <errno.h>. Include-файл содержит также полное множество значений,
         которое обеспечивает  поддержку  совместимости  с  XENIX  и  UNIX
         include-файлами, имеющими аналогичное имя. В этом приложении при-
         водится список значений errno, используемых в MS DOS. Полный спи-
         сок  значений errno приведен в include-файле <errno.h>. Здесь со-
         держится также список ошибок, возникающих при выполнении  матема-
         тических  процедур.  Эти ошибки соответствуют таким типам ошибок,
         которые объявлены в <math.h> и при  возникновении  математической
         ошибки возвращаются функцией matherr.
      
      
               2. Значения errno
            
               В таблице А.1 заданы значения errno, используемые в MS DOS,
         системные сообщения об ошибках, соответствующие каждому значению,
         а также краткое описание случаев, повлекших ошибку.
            
                                                          Таблица А.1
               
                           Значения errno и их описания
            
         Значение       Сообщение                Описание
                       
         E2BIG        Список аргументов   Список аргументов превышает
                      очень длинный.      128К   или    пространство,
                                          требуемое   для  информации
                                          окружения, превышает 32К.
         
           
         EACCES       Доступ              Доступ запрещен: разрешение,
                      запрещен            установленное для файла, не
                                          задает требуемый доступ.
                                          Эта ошибка возникает  в тех
                                          случаях,   когда    сделана
                                          попытка  доступа  к   файлу
                                          путем,  который несовместим
                                          с     атрибутами     файла.
                                          Например,  ошибка  возникла
                                          при чтении из файла,  кото-
                                          рый не является   открытым;
                                          при записи в открытый файл,
                                          предназначенный только  для
                                          чтения;    при     открытии
                                          директория вместо файла.  В
                                          версиях   MS   DOS   3.0  и
                                          старших EACCES может указы-
                                          вать на нарушение блокиров-
                                          ки или режима разделения.
                                          Ошибка возникает также  при
                                          переименовании  файла   или
                                          оглавления; при уничтожении
                                          существующего директория.
                                       
         EBADF        Неверное файловое   Значение  handle  для файла
                      число.              не является правильным,либо
                                          оно не ссылается  на откры-
                                          тый  файл;   либо   сделана
                                          попытка  записи  в файл или
                                          на   устройство,   открытые
                                          только для чтения (и наобо-
                                          рот).
                                       
         EDEADLOCK    Может возникнуть    Принудительная  блокировка:
                      зависание           файл    не     может   быть
                      (тупик)             блокирован         после 10
                                          попыток (для версии MS  DOS
                                          3.0 и последующих).
                                       
         EDOM         Математический      Аргумент для математической
                      аргумент.           функции    не   принадлежит
                                          области  определения   этой
                                          функции.
                   
         EEXIST       Файл существует.    Флаги   O_CREATE  и  O_EXCL
                                          определены   при   открытии
                                          файла, но файл  с  заданным
                                          именем уже существует.
           
         EINVAL       Неверный            Задан неверный аргумент для
                      аргумент.           одного     из    аргументов
                                          функции. Например, значение
                                          для  origin  (адрес  начала
                                          программы), задается, когда
         
                                          указатель на файл находится
                                          перед   началом файла.
                                       
         EMFILE       Много открытых      Другие handle-ры для  файла
                                          недоступны,  так как нельзя
                                          больше открыть другие файлы.
                                       
         ENOENT       Нет данного файла   Заданный      файл      или
                      или директория.     директорий  не   существует
                                          или  не  может быть найден.
                                          Это   сообщение  возникает,
                                          если заданный файл  не  су-
                                          ществует или в существующем
                                          директории   не  определена
                                          компонента path-имени.
                               
         ENOEXEC      Ошибка .EXE-        Сделана   попытка   создать
                      формата.            файл, который  не  является
                                          выполнимым    или   который
                                          имеет неверный .EXE-формат.
                                       
         ENOMEM       Памяти недоста-     Доступно       недостаточно
                      точно.              памяти. Это сообщение может
                                          возникать,    когда     для
                                          выполнения   child-процесса
                                          памяти   недостаточно,  или
                                          когда для памяти невозможно
                                          обеспечить такое расположе-
                                          ние,  которое требуется при
                                          вызовах  sbrk или getcwd.
                                       
         ENOSPC       На устройстве не    Свободного пространства  на
                      осталось свобод-    устройстве    недостаточно,
                      ного места          чтобы  произвести   запись,
                                          (например, диск полон).
                                       
         ERANGE       Результат очень     Аргумент для математической
                      большой.            функции очень большой, по-
                                          этому происходит  частичная
                                          или полная потеря значимос-
                                          ти результата. Эта   ошибка
                                          также  может  возникнуть  в
                                          других    функциях,   когда
                                          аргумент    больше,     чем
                                          предполагается.  (Например,
                                          когда  аргумент  path-имени
                                          для  функции getcwd больше,
                                          чем предполагается).
           
         EXDEV        Перекрестная связь  Сделана попытка перемещения
                      с устройством.      файла на другое  устройство
                                          (используется ф-я rename).
                 
                                       
                   
         
               3. Математические ошибки
            
               Ошибки,  приведенные ниже, порождаются математическими про-
         цедурами библиотеки Си. Эти ошибки соответствуют только тем типам
         ошибок, которые объявлены в  <math.h>,  и  возвращаются  функцией
         matherr.  Более  подробно  обо  всех ошибках приведено в описании
         функции matherr в части 2 данного руководства.
            
                           
           Ошибка                        Описание
            
           DOMAIN          Аргумент   для  функции  находится  вне
                           области определения функции.
                           
           OVERFLOW        Результат очень большой  для предостав-
                           ления его в возвращаемом значении.
                           
           PLOSS           Возникла частичная потеря значимости.
                           
           SING            Особенность  аргумента:  аргумент   для
                           функции    имеет    неверное   значение
                           (например,  пересылается значения 0   к
                           той функции, которая требует ненулевого
                           значения).
                           
           TLOSS           Возникла общая потеря значимости.
                           
           UNDERFLOW       Результат очень маленький для предоста-
                           вления  его  в  возвращаемом  значении.

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

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