Bagikan melalui


tmpnam_s, _wtmpnam_s

Hasilkan nama yang dapat Anda gunakan untuk membuat file sementara. Fungsi-fungsi ini adalah versi tmpnam dan _wtmpnam dengan peningkatan keamanan seperti yang dijelaskan dalam Fitur keamanan di CRT.

Sintaks

errno_t tmpnam_s(
   char * str,
   size_t sizeInChars
);
errno_t _wtmpnam_s(
   wchar_t *str,
   size_t sizeInChars
);
template <size_t size>
errno_t tmpnam_s(
   char (&str)[size]
); // C++ only
template <size_t size>
errno_t _wtmpnam_s(
   wchar_t (&str)[size]
); // C++ only

Parameter

str
[out] Pointer yang menyimpan nama yang dihasilkan.

sizeInChars
[di] Ukuran buffer dalam karakter.

Nilai hasil

Kedua fungsi ini mengembalikan 0 jika berhasil atau nomor kesalahan pada kegagalan.

Kondisi kesalahan

str sizeInChars Nilai hasil Isi dari str
NULL any EINVAL tidak dimodifikasi
not NULL (menunjuk ke memori yang valid) terlalu pendek ERANGE tidak dimodifikasi

Jika str adalah NULL, handler parameter yang tidak valid dipanggil, seperti yang dijelaskan dalam Validasi parameter. Jika eksekusi diizinkan untuk melanjutkan, fungsi-fungsi ini diatur errno ke EINVAL dan mengembalikan EINVAL.

Keterangan

Masing-masing fungsi ini mengembalikan nama file yang saat ini tidak ada. tmpnam_s mengembalikan nama unik dalam direktori sementara Windows yang ditunjuk yang dikembalikan oleh GetTempPathW. Ketika nama file didahului dengan garis miring terbalik dan tidak ada informasi jalur, seperti \fname21, itu menunjukkan bahwa nama tersebut valid untuk direktori kerja saat ini.

Untuk tmpnam_s, Anda dapat menyimpan nama file yang dihasilkan ini di str. Panjang maksimum string yang dikembalikan oleh tmpnam_s adalah L_tmpnam_s, ditentukan dalam STDIO.H. Jika str adalah NULL, maka tmpnam_s meninggalkan hasilnya dalam buffer statis internal. Dengan demikian setiap panggilan berikutnya menghancurkan nilai ini. Nama yang dihasilkan oleh tmpnam_s terdiri dari nama file yang dihasilkan program dan, setelah panggilan pertama ke tmpnam_s, ekstensi file nomor berurutan di basis 32 (.1-.1vvvvvvu, ketika TMP_MAX_S di STDIO. H adalah INT_MAX).

tmpnam_s secara otomatis menangani argumen string multibyte-character yang sesuai, mengenali urutan karakter multibyte sesuai dengan halaman kode OEM yang diperoleh dari sistem operasi. _wtmpnam_s adalah versi karakter yang luas dari tmpnam_s; argumen dan nilai yang dikembalikan adalah _wtmpnam_s string karakter lebar. _wtmpnam_s dan tmpnam_s bertingkah identik kecuali yang _wtmpnam_s tidak menangani string multibyte-character.

Di C++, menggunakan fungsi-fungsi ini disederhanakan oleh kelebihan beban templat; kelebihan beban dapat menyimpulkan panjang buffer secara otomatis, menghilangkan kebutuhan untuk menentukan argumen ukuran. Untuk informasi selengkapnya, lihat Mengamankan kelebihan beban templat.

Secara default, status global fungsi ini dicakup ke aplikasi. Untuk mengubah perilaku ini, lihat Status global di CRT.

Pemetaan rutin teks generik

TCHAR. Rutinitas H _UNICODE dan _MBCS tidak ditentukan _MBCS Didefinisikan _UNICODE Didefinisikan
_ttmpnam_s tmpnam_s tmpnam_s _wtmpnam_s

Persyaratan

Rutin Header yang diperlukan
tmpnam_s <stdio.h>
_wtmpnam_s <stdio.h> atau <wchar.h>

Untuk informasi kompatibilitas selengkapnya, lihat Kompatibilitas.

Contoh

// crt_tmpnam_s.c
// This program uses tmpnam_s to create a unique filename in the
// current working directory.
//

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

int main( void )
{
   char name1[L_tmpnam_s];
   errno_t err;
   int i;

   for (i = 0; i < 15; i++)
   {
      err = tmpnam_s( name1, L_tmpnam_s );
      if (err)
      {
         printf("Error occurred creating unique filename.\n");
         exit(1);
      }
      else
      {
         printf( "%s is safe to use as a temporary file.\n", name1 );
      }
   }
}
C:\Users\LocalUser\AppData\Local\Temp\u19q8.0 is safe to use as a temporary file.
C:\Users\LocalUser\AppData\Local\Temp\u19q8.1 is safe to use as a temporary file.
C:\Users\LocalUser\AppData\Local\Temp\u19q8.2 is safe to use as a temporary file.
C:\Users\LocalUser\AppData\Local\Temp\u19q8.3 is safe to use as a temporary file.
C:\Users\LocalUser\AppData\Local\Temp\u19q8.4 is safe to use as a temporary file.
C:\Users\LocalUser\AppData\Local\Temp\u19q8.5 is safe to use as a temporary file.
C:\Users\LocalUser\AppData\Local\Temp\u19q8.6 is safe to use as a temporary file.
C:\Users\LocalUser\AppData\Local\Temp\u19q8.7 is safe to use as a temporary file.
C:\Users\LocalUser\AppData\Local\Temp\u19q8.8 is safe to use as a temporary file.
C:\Users\LocalUser\AppData\Local\Temp\u19q8.9 is safe to use as a temporary file.
C:\Users\LocalUser\AppData\Local\Temp\u19q8.a is safe to use as a temporary file.
C:\Users\LocalUser\AppData\Local\Temp\u19q8.b is safe to use as a temporary file.
C:\Users\LocalUser\AppData\Local\Temp\u19q8.c is safe to use as a temporary file.
C:\Users\LocalUser\AppData\Local\Temp\u19q8.d is safe to use as a temporary file.
C:\Users\LocalUser\AppData\Local\Temp\u19q8.e is safe to use as a temporary file.

Baca juga

Streaming I/O
_getmbcp
malloc
_setmbcp
tmpfile_s