Share via


_fsopen, _wfsopen

ouvre un flux de données avec le partage de fichiers.

FILE *_fsopen( 
   const char *filename,
   const char *mode,
   int shflag 
);
FILE *_wfsopen( 
   const wchar_t *filename,
   const wchar_t *mode,
   int shflag 
);

Paramètres

  • filename
    Nom du fichier à ouvrir.

  • mode
    type d'accès autorisé.

  • shflag
    Type de partage autorisé.

Valeur de retour

Chacune de ces fonctions retourne un pointeur vers le flux de données.une valeur de pointeur null indique une erreur.Si filename ou mode est NULL ou une chaîne vide, ces fonctions appellent le gestionnaire de paramètre non valide, comme décrit dans Validation des paramètres.Si est autorisé à l'exécution de se poursuivre, ces fonctions NULL de retour et errno défini à EINVAL.

Pour plus d'informations sur ces éléments et d'autres codes d'erreur, consultez _doserrno, errno, _sys_errlist, et _sys_nerr.

Notes

La fonction d' _fsopen ouvre le fichier spécifié par filename flux et prépare le fichier pour la lecture partagée suivante ou l'écriture, comme défini par le mode et les arguments d' shflag ._wfsopen est une version à caractère élargi d' _fsopen; les arguments d' filename et d' mode à _wfsopen sont des chaînes à caractères larges._wfsopen et _fsopen se comportent de sinon.

La chaîne de caractères mode spécifie le type d'accès demandé pour le fichier, comme indiqué dans le tableau suivant.

Terme

Définition

"r"

S'ouvre pour la lecture.Si le fichier n'existe pas ou introuvable, l'appel d' _fsopen échoue.

"w"

Ouvre un fichier vide pour l'écriture.Si le fichier spécifié existe, son contenu est détruit.

"a"

S'ouvre pour écrire à la fin de le fichier (ajouter) ; crée un fichier d'abord s'il n'existe pas.

"r+"

s'ouvre pour la lecture et l'écriture.(Le fichier doit exister.)

"w+"

ouvre un fichier vide pour la lecture et l'écriture.Si le fichier spécifié existe, son contenu est détruit.

"a+"

S'ouvre pour lire et ajouter ; crée un fichier d'abord s'il n'existe pas.

Utilisez les types d' "w" et d' "w+" avec prudence, car ils peuvent détruire des fichiers existants.

Lorsqu'un fichier est ouvert avec le type d'accès d' "a" ou d' "a+" , toutes les opérations d'écriture se produisent à la fin de le fichier.Le pointeur de fichier peut être repositionné à l'aide de fseek ou rewind, mais il est toujours déplacé vers la fin du fichier avant que toute opération d'écriture soit exécutée.Par conséquent, les données existantes ne peuvent pas être remplacées.Lorsque "r+", "w+", ou le type d'accès d' "a+" est spécifié, il autorise la lecture et l'écriture (le fichier est appelé ouvert pour la mise à jour).Toutefois, le basculement entre la lecture et l'écriture, il doit y avoir fsetposintermédiaire, fseek, ou opération de rebobinage .La position actuelle peut être spécifiée pour une opération d' fsetpos ou d' fseek , si vous le souhaitez.Outre les valeurs ci-dessus, l'un des caractères suivants peuvent être inclus dans mode pour spécifier un en mode de traduction pour les nouvelles lignes, et pour la gestion de fichiers.

Terme

Définition

t

Ouvre un fichier en mode de texte (traduits).Dans ce mode, les combinaisons de retour-ligne de chariot (CR-LF) sont traduits en sauts de ligne unique (LF) sur l'entrée et les caractères de saut de ligne sont traduits aux combinaisons de CR-LF sur la sortie.En outre, CTRL+Z est interprète comme caractère de fin de fichier de l'entrée.Dans les fichiers ouverts pour lire ou la lecture/écriture, _fsopen vérifie la présence d'un CTRL+Z à la fin de le fichier et le supprimer, si possible.Cette opération est exécutée comme l'utilisation d' fseek et d' ftell pour déplacer dans un fichier qui se termine par un CTRL+Z peut entraîner un comportement fseek incorrectement à la fin de le fichier.

b

Ouvre un fichier en mode (non traduit) binaire ; les traductions ci-dessus sont supprimées.

S

Spécifie que la mise en cache est optimisé pour, mais pas un niveau, l'accès séquentiel à partir de le disque.

R

Spécifie que la mise en cache est optimisé pour, mais pas un niveau, l'accès aléatoire à partir de le disque.

T

Spécifie un fichier comme temporaire.Si possible, il n'est pas vidé sur le disque.

D

Spécifie un fichier comme temporaire.Il est supprimé lorsque le dernier pointeur de fichier est fermé.

si t ou b n'est pas donné dans mode, l'à mode de traduction est défini par la variable _fmodede valeur par défaut-mode.Si t ou b est préfixé à l'argument, la fonction échoue et retourne NULL.Pour plus d'informations sur les modes de texte et de binaire, consultez l' E/S de fichier du mode de texte et de binaire.

L'argument shflag est une expression constante se composer de constantes manifestes suivantes, défini dans Share.h.

Terme

Définition

_SH_COMPAT

Définit le mode de compatibilité pour les applications 16 bits.

_SH_DENYNO

Autorise l'accès en lecture et en écriture.

_SH_DENYRD

Accès en lecture refuser au fichier.

_SH_DENYRW

refuse l'accès en lecture et en écriture au fichier.

_SH_DENYWR

refuse l'accès en écriture au fichier.

mappages de routines de texte générique

routine de Tchar.h

_UNICODE et _MBCS non définis

_MBCS défini

_UNICODE défini

_tfsopen

_fsopen

_fsopen

_wfsopen

Configuration requise

Fonction

en-tête requis

en-têtes facultatifs

_fsopen

<stdio.h>

<share.h>

Pour la constante de manifeste pour le paramètre d' shflag .

_wfsopen

<stdio.h> ou <wchar.h>

<share.h>

Pour la constante de manifeste pour le paramètre d' shflag .

Exemple

// crt_fsopen.c

#include <stdio.h>
#include <stdlib.h>
#include <share.h>

int main( void )
{
   FILE *stream;

   // Open output file for writing. Using _fsopen allows us to
   // ensure that no one else writes to the file while we are
   // writing to it.
    //
   if( (stream = _fsopen( "outfile", "wt", _SH_DENYWR )) != NULL )
   {
      fprintf( stream, "No one else in the network can write "
                       "to this file until we are done.\n" );
      fclose( stream );
   }
   // Now others can write to the file while we read it.
   system( "type outfile" );
}
  

Équivalent .NET Framework

Voir aussi

Référence

E/S de flux

fclose, _fcloseall

_fdopen, _wfdopen

ferror

_fileno

le fopen, _wfopen

freopen, _wfreopen

_open, _wopen

_setmode

_sopen, _wsopen