Share via


_fsopen, _wfsopen

Abra una secuencia con el uso compartido de archivos.

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

Parámetros

  • filename
    Nombre del archivo a abrir.

  • mode
    tipo de acceso permitido.

  • shflag
    tipo de uso compartido permitido.

Valor devuelto

Cada una de estas funciones devuelve un puntero a la secuencia.Un valor de puntero NULL indica un error.Si filename o mode es NULL o una cadena vacía, estas funciones se invoca el controlador no válido del parámetro, como se describe en. Validación de parámetrosSi la ejecución puede continuar, estas funciones NULL return y errno determinado a EINVAL.

Para obtener más información sobre éstos y otros códigos de error, vea _doserrno, errno, _sys_errlist, y _sys_nerr.

Comentarios

La función de _fsopen abre el archivo especificado por filename como secuencia y prepara el archivo para leer o escribir compartida posterior, como definido por el modo y los argumentos de shflag ._wfsopen es una versión con caracteres anchos de _fsopen; los argumentos de filename y de mode a _wfsopen son cadenas de caracteres._wfsopen y _fsopen se comportan exactamente igual de otra manera.

Cadena de caracteres mode especifica el tipo de acceso solicitado para el archivo, como se muestra en la tabla siguiente.

Término

Definición

"r"

Abrir para leer.Si el archivo no existe o no se encuentra, la llamada de _fsopen falla.

"w"

Abra un archivo vacío para escribir.Si existe el archivo dado, se destruyen su contenido.

"a"

Abrir para escribir al final del archivo (el anexar); crea el archivo primero si no existe.

"r+"

Abrir para la lectura y escritura.(El archivo no debe existir.)

"w+"

Abra un archivo vacío para la lectura y escritura.Si existe el archivo dado, se destruyen su contenido.

"a+"

Abrir para leer y anexar; crea el archivo primero si no existe.

Utilice los tipos de "w" y de "w+" con cuidado, como pueden destruir archivos existentes.

Si se abre con el tipo de acceso de "a" o de "a+" , todas las operaciones de escritura aparecen al final del archivo.El puntero de archivo se puede mover mediante fseek o rewind, pero se mueve siempre al final del archivo antes de que se realice cualquier operación de escritura.Así, los datos existentes no pueden sobrescribirse.Cuando se especifica "r+", "w+", o el tipo de acceso de "a+" , se permiten la lectura y escritura (el archivo se abre para la actualización).Sin embargo, al cambiar entre la lectura y escritura, debe haber fsetposintermedia, fseek, u operación de rebobinado .La posición actual se puede especificar para la operación de fsetpos o de fseek , si lo desea.Además de los valores anteriores, uno de los siguientes caracteres se puede incluir en mode para especificar el de modalidad de traducción para las nuevas líneas, y para la administración de archivos.

Término

Definición

t

Abra un archivo en modo de texto (traducido).En este modo, las combinaciones de fuentes de la retorno-línea de carro (CR-LF) se convierten en los únicos saltos de línea (LF) en entrada y caracteres de LF se traducen a las combinaciones de CR-LF en la salida.También, CTRL+Z se interpretan como un final de archivo de entrada.En archivos abierto para lectura o lectura/escritura, comprobaciones de _fsopen un CTRL+Z al final del archivo y colóquelo, si es posible.Esto se hace porque utilizar fseek y ftell para desplazarse en un archivo que termina con un CTRL+Z podría hacer fseek para comportarse incorrectamente cerca del final del archivo.

b

Abra un archivo en modo (sin traducir) binario; se suprimen las conversiones anteriores.

S

Especifica que almacena en memoria caché se optimiza para, pero no se restringe, acceso secuencial a desde el disco.

R

Especifica que almacena en memoria caché se optimiza para, pero no se restringe, acceso aleatorio a desde el disco.

T

especifica un archivo como temporal.Si es posible, no se vacía en el disco.

D

especifica un archivo como temporal.Se elimina cuando se cierra el puntero de archivo pasado.

Si t o b no se proporcione en mode, el de modalidad de traducción está definido por la variable _fmodede valor por defecto-modo.Si t o b precedido el argumento, se produce un error en la función y devuelve NULL.Para obtener una explicación de los modos de texto y el binario, vea E/S de archivo de texto y el modo binario.

El argumento shflag es una expresión constante el constar de las constantes de manifiesto siguientes, definidos en Share.h.

Término

Definición

_SH_COMPAT

Establece el modo de compatibilidad para las aplicaciones de 16 bits.

_SH_DENYNO

permite el acceso de lectura y escritura.

_SH_DENYRD

Deniega el acceso de lectura al archivo.

_SH_DENYRW

Deniega el acceso de lectura y escritura al archivo.

_SH_DENYWR

Deniega el acceso de escritura al archivo.

Asignaciones de la rutina de texto genérico

rutina de Tchar.h

_UNICODE y _MBCS no definido

_MBCS definido

_UNICODE definido

_tfsopen

_fsopen

_fsopen

_wfsopen

Requisitos

Función

Encabezado necesario

encabezados opcionales

_fsopen

<stdio.h>

<share.h>

Para la constante de manifiesto para el parámetro de shflag .

_wfsopen

<stdio.h> o <wchar.h>

<share.h>

Para la constante de manifiesto para el parámetro de shflag .

Ejemplo

// 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" );
}
  

Equivalente en .NET Framework

Vea también

Referencia

E/S de la secuencia

fclose, _fcloseall

_fdopen, _wfdopen

ferror

_fileno

fopen, _wfopen

freopen, _wfreopen

_open, _wopen

_setmode

_sopen, _wsopen