Partager via


_write

Écrit des données dans un fichier.

int _write(
   int fd,
   const void *buffer,
   unsigned int count 
);

Paramètres

  • fd
    Descripteur de fichier du fichier dans lequel les données est écrite.

  • buffer
    Données à écrire.

  • count
    Nombre d'octets.

Valeur de retour

En cas de réussite, _write retourne le nombre d'octets réellement écrits.Si l'espace réel restantes sur le disque est inférieur à la taille de la mémoire tampon la fonction essaie d'écrire sur le disque, _write échoue et ne vide pas le contenu de la mémoire tampon l'une des sur le disque.Une valeur de retour - 1 indique une erreur.Si des paramètres incorrects sont passés, cette fonction appelle le gestionnaire de paramètre non valide, comme décrit dans Validation des paramètres.Si est autorisé à l'exécution de se poursuivre, la fonction retourne -1 et errno a une des trois valeurs suivantes : EBADF, ce qui signifie que le descripteur de fichier n'est pas valide ou le fichier n'est pas ouvert pour écriture ; ENOSPC, ce qui signifie qu'il n'y a pas assez d'espace laissé sur le périphérique pour l'opération ; ou EINVAL, ce qui signifie qu' buffer était un pointeur null.

Consultez _doserrno, errno, _sys_errlist, et _sys_nerr pour plus d'informations sur ce point, ainsi que d'autres, les codes de retour.

Si le fichier est ouvert en mode texte, chaque caractère de saut de ligne est remplacé par une paire saut de ligne-retour chariot dans la sortie.le remplacement n'affecte pas la valeur de retour.

Notes

La fonction d' _write écrit des octets d' count d' buffer dans le fichier associé à fd.L'opération d'écriture commence à la position actuelle du pointeur de fichier (le cas échéant) associé au fichier donné.Si le fichier est ouvert pour ajouter, l'opération démarre à la fin actuelle du fichier.Une fois l'opération d'écriture, le pointeur de fichier est ajouté par le nombre d'octets réellement écrits.

Lorsque l'écriture de fichiers avez ouvert en mode texte, _write traite un caractère de CTRL+Z comme fin de fichier logique.En écrivant sur un périphérique, _write traite un caractère de CTRL+Z dans la mémoire tampon comme terminateur de sortie.

Configuration requise

routine

en-tête requis

_write

<io.h>

Pour des informations de compatibilité supplémentaires, consultez compatibilité dans l'introduction.

Exemple

// crt__write.c
// 
// This program opens a file for output and uses _write to write
// some bytes to the file.

#include <io.h>
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <errno.h>
#include <share.h>

char buffer[] = "This is a test of '_write' function";

int main( void )
{
   int         fileHandle = 0;
   unsigned    bytesWritten = 0;

   if ( _sopen_s(&fileHandle, "write.o", _O_RDWR | _O_CREAT,
                  _SH_DENYNO, _S_IREAD | _S_IWRITE) )
      return -1;

   if (( bytesWritten = _write( fileHandle, buffer, sizeof( buffer ))) == -1 )
   {
      switch(errno)
      {
         case EBADF:
            perror("Bad file descriptor!");
            break;
         case ENOSPC:
            perror("No space left on device!");
            break;
         case EINVAL:
            perror("Invalid parameter: buffer was NULL!");
            break;
         default:
            // An unrelated error occured 
            perror("Unexpected error!");
      }
   }
   else
   {
      printf_s( "Wrote %u bytes to file.\n", bytesWritten );
   }
   _close( fileHandle );
}
  

Voir aussi

Référence

E/S de bas niveau

fwrite

_open, _wopen

_read