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
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk