Exportar (0) Imprimir
Expandir todo
div
eof
Expandir Minimizar
Este artículo proviene de un motor de traducción automática. Mueva el puntero sobre las frases del artículo para ver el texto original. Más información.
Traducción
Original
Este tema aún no ha recibido ninguna valoración - Valorar este tema

_mktemp, _wmktemp

Crea un nombre único. Versiones más seguras de estas funciones están disponibles; vea _mktemp_s, _wmktemp_s.

char *_mktemp(
   char *template 
);
wchar_t *_wmktemp(
   wchar_t *template 
);
template <size_t size>
char *_mktemp(
   char (&template)[size]
); // C++ only
template <size_t size>
wchar_t *_wmktemp(
   wchar_t (&template)[size]
); // C++ only
template

perfil de nombre.

Cada una de estas funciones devuelve un puntero a la plantilla modificada. La función devuelve NULL si template se forma mal o no más de nombres únicos se pueden crear de plantilla especificada.

la función de _mktemp crea un nombre de archivo único modificando el argumento de template . _mktemp controla automáticamente argumentos de cadena de caracteres multibyte según corresponda, reconociendo secuencias de caracteres multibyte según la página de códigos multibyte actualmente en uso por el sistema en tiempo de ejecución. _wmktemp es una versión con caracteres anchos de _mktemp; el argumento y el valor devuelto de _wmktemp son cadenas de caracteres. _wmktemp y _mktemp se comportan exactamente igual de otra forma, salvo que _wmktemp no controla las cadenas de caracteres multibyte.

Asignaciones de la rutina de texto genérico

rutina de Tchar.h

_UNICODE y _MBCS no definido

_MBCS definido

_UNICODE definido

_tmktemp

_mktemp

_mktemp

_wmktemp

El argumento de template tiene el formato base, donde es la parte base del nuevo nombre de archivo que proporciona y cada X es un marcador de posición para un carácter proporcionado por _mktemp. Cada carácter marcador en template debe ser mayúscula X. _mktemp conserva base y reemplaza el primer X que se arrastra por un carácter alfabético. _mktemp reemplaza X final siguiente con un valor de cinco dígitos; este valor es un número único que identifica el proceso de llamada, o en programas multiproceso, el subproceso de llamada.

Cada llamada correcta a_mktemp modifica template. En cada llamada subsiguiente del mismo proceso o subproceso con el mismo argumento de template , las comprobaciones de _mktemp los nombres de archivo que coinciden con los nombres devueltos por _mktemp en llamadas anteriores. Si ningún archivo existe para un nombre especificado, _mktemp devuelve ese nombre. Si los archivos existen para todos los nombres previamente devueltos, _mktemp crea un nuevo nombre reemplazando el carácter alfabético que utilizó en el nombre previamente devuelto a minúscula disponible siguiente, en orden, de “a” a la “z”. por ejemplo, si es base :

fn

y el valor de cinco dígitos proporcionado por _mktemp es 12345, el nombre devuelto es:

fna12345

Si este nombre se utiliza para crear el archivo FNA12345 y todavía existe este archivo, el siguiente nombre devuelto en una llamada el mismo proceso o subproceso con el mismo base para template es:

fnb12345

Si no existe FNA12345, el siguiente nombre devuelto está de nuevo:

fna12345

_mktemp pueden crear un máximo de 26 nombres de archivo únicos para cualquier combinación de valores de base y de la plantilla. Por consiguiente, FNZ12345 es el nombre de archivo único pasado _mktemp puede crear por los valores de base y de template utilizados en este ejemplo.

en el error, se establece errno . Si template tiene un formato no válido (por ejemplo, menos de 6 X), errno se establece en EINVAL. Si _mktemp no puede crear un nombre único porque existen los 26 nombres de archivo posibles ya, _mktemp establece la plantilla en una cadena vacía y devuelve EEXIST.

En C++, estas funciones tienen sobrecargas de plantilla que se invoque según el nuevo, garantiza que sus homólogos de estas funciones. Para obtener más información, vea Sobrecargas de plantilla seguras.

rutina

Encabezado necesario

_mktemp

<io.h>

_wmktemp

<io.h> o <wchar.h>

Para obtener más información de compatibilidad, vea compatibilidad en la Introducción.

// crt_mktemp.c
// compile with: /W3
/* The program uses _mktemp to create
 * unique filenames. It opens each filename
 * to ensure that the next name is unique.
 */

#include <io.h>
#include <string.h>
#include <stdio.h>
#include <errno.h>

char *template = "fnXXXXXX";
char *result;
char names[27][9];

int main( void )
{
   int i;
   FILE *fp;

   for( i = 0; i < 27; i++ )
   {
      strcpy_s( names[i], sizeof( names[i] ), template );
      /* Attempt to find a unique filename: */
      result = _mktemp( names[i] );  // C4996
      // Note: _mktemp is deprecated; consider using _mktemp_s instead
      if( result == NULL )
      {
         printf( "Problem creating the template\n" );
         if (errno == EINVAL)
         {
             printf( "Bad parameter\n");
         }
         else if (errno == EEXIST)
         {
             printf( "Out of unique filenames\n"); 
         }
      }
      else
      {
         fopen_s( &fp, result, "w" );
         if( fp != NULL )
            printf( "Unique filename is %s\n", result );
         else
            printf( "Cannot open %s\n", result );
         fclose( fp );
      }
   }
}
el nombre de archivo único es fna03912
el nombre de archivo único es fnb03912
el nombre de archivo único es fnc03912
el nombre de archivo único es fnd03912
el nombre de archivo único es fne03912
el nombre de archivo único es fnf03912
el nombre de archivo único es fng03912
el nombre de archivo único es fnh03912
el nombre de archivo único es fni03912
el nombre de archivo único es fnj03912
el nombre de archivo único es fnk03912
el nombre de archivo único es fnl03912
el nombre de archivo único es fnm03912
el nombre de archivo único es fnn03912
el nombre de archivo único es fno03912
el nombre de archivo único es fnp03912
el nombre de archivo único es fnq03912
el nombre de archivo único es fnr03912
el nombre de archivo único es fns03912
el nombre de archivo único es fnt03912
el nombre de archivo único es fnu03912
el nombre de archivo único es fnv03912
el nombre de archivo único es fnw03912
el nombre de archivo único es fnx03912
el nombre de archivo único es fny03912
el nombre de archivo único es fnz03912
problema que crea la plantilla.  fuera de nombres de archivo únicos.  

No es aplicable Para llamar a la función estándar de C, utilice PInvoke. Para obtener más información, vea La invocación de plataforma ejemplos.

¿Te ha resultado útil?
(Caracteres restantes: 1500)
Gracias por sus comentarios

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft. Reservados todos los derechos.