Aracılığıyla paylaş


_makepath_s, _wmakepath_s

Yol adı bileşenlerini oluşturur. Bunlar sürümleridir _makepath, _wmakepath açıklandığı gibi güvenlik geliştirmeleri ile crt güvenlik özellikleri.

errno_t _makepath_s(
   char *path,
   size_t sizeInBytes,
   const char *drive,
   const char *dir,
   const char *fname,
   const char *ext 
);
errno_t _wmakepath_s(
   wchar_t *path,
   size_t sizeInWords,
   const wchar_t *drive,
   const wchar_t *dir,
   const wchar_t *fname,
   const wchar_t *ext 
);
template <size_t size>
errno_t _makepath_s(
   char (&path)[size],
   const char *drive,
   const char *dir,
   const char *fname,
   const char *ext 
); // C++ only
template <size_t size>
errno_t _wmakepath_s(
   wchar_t (&path)[size],
   const wchar_t *drive,
   const wchar_t *dir,
   const wchar_t *fname,
   const wchar_t *ext 
); // C++ only

Parametreler

  • [Çıkış]path
    Tam yol arabellek.

  • [in]sizeInWords
    Sözcükleri arabellek boyutu.

  • [in]sizeInBytes
    Arabelleğinin bayt cinsinden boyutu.

  • [in]drive
    Bir harf (a, b vb.) içeren istediğiniz sürücüyü ve isteğe bağlı sonunda iki nokta karşılık gelen. _makepath_seksik ise, iki nokta üst üste bileşik yolun otomatik olarak ekler. drive Olan NULL veya boş bir dize için sürücü harfi puntoda bileşik path dize.

  • [in]dir
    Sürücü göstergesi ya da gerçek bir dosya adı içermeyen dizin yolunu içerir. Eğik isteğe bağlıdır ve eğik çizgi (/) veya ters eğik çizgi (\) veya her ikisini tek bir kullanılabilir dir bağımsız değişkeni. Eğik çizgiye yok ise (/ veya \) belirtilmişse, otomatik olarak eklenir. dir Olan NULL veya boş bir dize, hiçbir dizin yolu noktalara bileşik eklenen path dize.

  • [in]fname
    Herhangi bir dosya adı uzantıları olmadan temel dosya adı içeriyor. fname Olan NULL ya da dosya adı boş bir dize noktalara bileşik eklenen path dize.

  • [in]ext
    Gerçek dosya adı uzantısı olan veya nokta (.) koymadan içerir. _makepath_sDönem içinde görüntülenmezse, otomatik olarak ekler ext. ext Olan NULL veya boş bir dize, hiçbir uzantı noktalara bileşik eklenen path dize.

Dönüş Değeri

Sıfır başarılı olursa; hata durumunda bir hata kodu.

Hata koşulları

path

sizeInWords / sizeInBytes

Return

İçeriğipath

NULL

herhangi bir

EINVAL

modifiye edilmemiş

herhangi bir

< = 0

EINVAL

modifiye edilmemiş

Yukarıdaki hata durumlardan herhangi biri meydana gelirse, bu işlevler geçersiz parametre işleyicisi açıklandığı şekilde harekete Parametre doğrulama. Yürütülmesine devam etmek için izin verilip verilmediğini errno ayarlamakEINVAL ve işlevleri döndürürEINVAL**.** NULLParametreler için izin drive, fname, ve ext. Davranış hakkında bilgi için bu parametreler işaretçi null veya boş dize olduğunda açıklamalar bölümüne bakın.

Notlar

_makepath_s İşlev sonucu depolamak bağımsız bileşenlerden bir bileşik yol dizesi oluşturur path. path Bir sürücü harfini, dizin yolu, dosya adı ve dosya adı uzantısı içerebilir. _wmakepath_sgeniş karakter sürümü _makepath_s; bağımsız _wmakepath_s geniş karakter dizeleridir. _wmakepath_sve _makepath_s Aksi takdirde aynı şekilde davranır.

Genel metin yordamı eşlemeleri

Tchar.h yordamına girildi

_UNICODE ve _mbcs tanımlı değil

Tanımlanan _mbcs

Tanımlanan _UNICODE

_tmakepath_s

_makepath_s

_makepath_s

_wmakepath_s

path Bağımsız değişkeni, bir boş arabellek için tam yolunu tutacak büyüklükte göstermelidir. Bileşik path değerinden daha büyük olması _MAX_PATH sabiti, Stdlib.h içinde tanımlanan.

Yol, NULL, geçersiz parametre işleyicisi, açıklandığı şekilde çağrılır Parametre doğrulama. Buna ek olarak, errno ayarlamak EINVAL. NULLtüm diğer parametreler için izin verilen değerler.

C++'da, bu işlevler tarafından şablon aşırı kolaylaştırılmıştır; aşırı arabellek uzunluğu otomatik olarak gerçekleştirip (size baðýmsýz deðiþkeni belirtmek gereğini ortadan kaldırır) ve bunlar otomatik olarak yeni, güvenli karşılıkları ile eski, güvenli olmayan işlevler değiştirebilirsiniz. Daha fazla bilgi için bkz. Güvenli şablon aşırı yükleme.

Bu işlevleri hata ayıklama sürümlerini ilk tampon 0xFD ile doldurun. Bu davranışı devre dışı bırakmak için _CrtSetDebugFillThreshold.

Gereksinimler

Yordamı

Gerekli başlık

_makepath_s

<stdlib.h>

_wmakepath_s

<stdlib.h> veya <wchar.h>

Daha fazla uyumluluk bilgileri için bkz: Uyumluluk giriş.

Örnek

// crt_makepath_s.c

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

int main( void )
{
   char path_buffer[_MAX_PATH];
   char drive[_MAX_DRIVE];
   char dir[_MAX_DIR];
   char fname[_MAX_FNAME];
   char ext[_MAX_EXT];
   errno_t err;

   err = _makepath_s( path_buffer, _MAX_PATH, "c", "\\sample\\crt\\",
                      "crt_makepath_s", "c" );
   if (err != 0)
   {
      printf("Error creating path. Error code %d.\n", err);
      exit(1);
   }
   printf( "Path created with _makepath_s: %s\n\n", path_buffer );
   err = _splitpath_s( path_buffer, drive, _MAX_DRIVE, dir, _MAX_DIR, fname,
                       _MAX_FNAME, ext, _MAX_EXT );
   if (err != 0)
   {
      printf("Error splitting the path. Error code %d.\n", err);
      exit(1);
   }
   printf( "Path extracted with _splitpath_s:\n" );
   printf( "  Drive: %s\n", drive );
   printf( "  Dir: %s\n", dir );
   printf( "  Filename: %s\n", fname );
   printf( "  Ext: %s\n", ext );
}

Çıktı

Path created with _makepath_s: c:\sample\crt\crt_makepath_s.c

Path extracted with _splitpath_s:
  Drive: c:
  Dir: \sample\crt\
  Filename: crt_makepath_s
  Ext: .c

.NET Framework Eşdeğeri

System::IO::file:: oluşturma

Ayrıca bkz.

Başvuru

Dosya işleme

_fullpath, _wfullpath

_splitpath_s, _wsplitpath_s

_makepath, _wmakepath