Compartir a través de


_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 de parámetro, tal y como se describe en Validación de parámetros. Si la ejecución puede continuar, estas funciones devuelven NULL y establecen errno en EINVAL.

Para obtener más información sobre estos y otros códigos 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, tal como se define en 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. Por lo demás, _wfsopen y _fsopen se comportan de forma idéntica.

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"

Abre para lectura. Si el archivo no existe o no se encuentra, la llamada de _fsopen produce un error.

"w"

Abre un archivo vacío para escritura. Si el archivo especificado existe, se destruye su contenido.

"a"

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

"r+"

Abre para lectura y escritura. (El archivo debe existir.)

"w+"

Abre un archivo vacío para lectura y escritura. Si el archivo especificado existe, se destruye su contenido.

"a+"

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

Use los tipos "w" y "w+" con cuidado, ya que podrían 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. Por consiguiente, 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 . Si se desea, se puede especificar la posición actual para la operación fsetpos o fseek. 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. Además, CTRL+Z se interpreta como carácter de final de archivo en la 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. Se hace esto 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 el almacenamiento en caché está optimizado para el acceso secuencial (pero no restringido a este) desde el disco.

R

Especifica que el almacenamiento en caché está optimizado para el acceso aleatorio (pero no restringido a este) desde el disco.

T

Especifica un archivo como temporal. Si es posible, no se vuelca en el disco.

D

Especifica un archivo como temporal. Se elimina cuando se cierra el puntero del último archivo.

Si t o b no se proporcione en mode, el de modalidad de traducción está definida por la variable _fmodede valor por defecto- modo. Si se agrega t o b como prefijo al argumento, se produce un error en la función y devuelve NULL. Para obtener información sobre los modos de texto y binario, vea E/S de archivo de modo de texto y 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 rutina de texto genérico

Rutina Tchar.h

_UNICODE y _MBCS no definidos

_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 secuencia

fclose, _fcloseall

_fdopen, _wfdopen

ferror

_fileno

fopen, _wfopen

freopen, _wfreopen

_open, _wopen

_setmode

_sopen, _wsopen