Aracılığıyla paylaş


freopen_s, _wfreopen_s

Dosya işaretçisi yeniden atayın. Sürümleri bunlar freopen, _wfreopen açıklandığı gibi güvenlik geliştirmeleri ile crt güvenlik özellikleri.

errno_t freopen( 
   FILE** pFile,
   const char *path,
   const char *mode,
   FILE *stream 
);
errno_t _wfreopen( 
   FILE** pFile,
   const wchar_t *path,
   const wchar_t *mode,
   FILE *stream 
);

Parametreler

  • [çıkış]pFile
    Çağrı tarafından sağlanacak dosya işaretçisi için bir işaretçi.

  • [in]path
    Yeni dosyanın yolu.

  • [in]mode
    İzin verilen erişim türü.

  • [in]stream
    İşaretçi FILE yapısı.

Dönüş Değeri

Bu işlevlerden her biri bir hata kodu döndürür. Bir hata oluşursa, özgün dosya kapatıldı.

Notlar

freopen_s İşlevi ile şu anda ilişkili dosyayı kapatır stream ve yeniden atar stream tarafından belirtilen dosyaya path._wfreopen_s bir geniş karakter sürümü _freopen_s; path ve mode bağımsız değişkenleri _wfreopen_s geniş karakter dizeleridir. _wfreopen_sve _freopen_s Aksi takdirde aynı şekilde davranır.

Varsa pFile, path, mode, veya stream olan NULL, veya path boş bir dize parametresi geçersiz işleyici açıklandığı gibi bu işlevleri çağırma Parametre doğrulama. Yürütülmesine devam etmek için izin verilirse, bu işlevler kümesi errno için EINVAL ve EINVAL.

Genel metin eşlemeleri yordamına girildi

TCHAR.H yordamına girildi

_UNICODE & _mbcs tanımlanmamış

Tanımlanan _mbcs

Tanımlanan _UNICODE

_tfreopen_s

freopen_s

freopen_s

_wfreopen_s

freopen_sgenellikle pre-opened dosyaları yeniden yönlendirmek için kullanılan stdin, stdout, ve stderr kullanıcı tarafından belirtilen dosyaları. Yeni dosya ile ilişkili stream ile açılan mode*,* , olan bir karakter dizesi belirtme gibi dosya için istenen erişim türü:

  • "r"
    Okuma için açılır. Dosya yok veya bulunamıyor, freopen_s çağrısı başarısız.

  • "w"
    Yazmak için boş bir dosya açar. Verilen dosya varsa, içeriği yok edilir.

  • "a"
    (Ekleme) dosyasına; yeni veri yazmadan önce eof işaretçisi kaldırmadan dosyanın sonundaki yazma için açar yoksa, dosyayı ilk olarak oluşturur.

  • "r+"
    Hem okuma ve yazma için açar. (Dosyanın varolması gerekir.)

  • "w+"
    Hem okumak ve yazmak için boş bir dosya açar. Verilen dosya varsa, içeriği yok edilir.

  • "a+"
    Ekleme ve okuma için açılır; ekleme işlemi, yeni veri dosyasına yazılır ve eof işaretçisi yazma işlemi tamamlandıktan sonra geri önce eof işaretinin kaldırılması içerir; yoksa, dosyayı ilk olarak oluşturur.

Kullanım "w" ve "w+" türleri, dikkatli gibi varolan dosyaları yok edebilirsiniz.

Ne zaman bir dosya açıldığında ile "a" veya "a+" erişim türüne, tüm dosyanın sonundaki işlemlerinin gerçekleşmesi yazmak. Dosya işaretçisini kullanarak yeniden yerleştirilmesini rağmen fseek veya rewind, herhangi bir işlem gerçekleştirilir yazmadan önce dosya işaretçisi her zaman geri dosya sonuna taşınır. Bu nedenle, varolan verilerin üzerine yazılamaz.

"a" Mod kaldırmaz eof işaretçisi dosyaya eklenmesinden önce. Ekleme gerçekleştikten sonra ms-dos type komutu yalnızca özgün eof işaretçisi kadar veri ve dosyanın sonuna hiçbir veri gösterir. "a+" Modunu dosyaya eklenmesinden önce eof işareti kaldırabilirsiniz. Eklenmesinden sonra türü ms-dos komut dosyasındaki tüm verileri gösterir. "a+" Modu ctrl + z eof imi ile sonlandırılan bir akış dosya ekleme için gereklidir.

Zaman "r+","w+", veya "a+" , hem okuma hem de yazma izin verilen erişim türü belirtilir (dosya açık "güncelleştirmesi" denir). Ancak, okuma ve yazma arasında geçiş yaptığınızda, olması gerekir bir araya giren fsetpos, fseek, veya geri işlem. Geçerli konumu için belirtilen fsetpos veya fseek isterseniz, işlem. Yukarıdaki değerlere ek olarak, aşağıdaki karakterlerden birini eklenebilir mode yeni satırlar için çeviri modunu belirtmek için dize.

  • t
    Açık metin modu (çevrilmiş); satır başı (cr-lf) return–linefeed birleşimleri giriş üzerinde tek satır besleme (lf) karakterleri içine çevrilir; Çıktıda cr-lf birleşimleri için lf karakterleri çevrilir. Ayrıca, ctrl + z giriş üzerinde bir dosya sonu karakteri olarak yorumlanır. İle okuma ve yazma veya okuma için açılan dosyalar, "a+", çalışma zamanı kitaplığı için ctrl + z dosyanın sonundaki denetler ve bunu, mümkünse kaldırır. Bu kullanarak çünkü yapılır fseek ve ftell dosyası içinde taşımak için neden olabilir fseek dosya sonuna yakın hatalı davranmasına. t Seçenek, bir Microsoft uzantısı ANSI taşınabilirlik istenmediği yerde kullanılmamalıdır.

  • b
    Açık (untranslated) ikili modda; Yukarıdaki çevirileri görüntülenmez.

t Veya b verilmemiştir mode, genel değişkeni tarafından tanımlanan varsayılan çeviri modu _fmode. t Veya b bağımsız değişken, işlev başarısız olur ve döner öneki NULL.

Metin ve ikili mod bir tartışma için bkz: metin ve ikili mod dosya g/ç.

Gereksinimler

İşlev

Gerekli başlık

freopen_s

<stdio.h>

_wfreopen_s

<stdio.h> veya <wchar.h>

Konsol desteklenen değil Windows Mağazası apps. Konsolu ile ilgili standart akış tanıtıcıları stdin, stdout, ve stderr, c çalışma zamanı işlevlerini de kullanılmadan önce yönlendirilecek Windows Mağazası apps. Ek uyumluluk bilgileri için bkz: Uyumluluk giriş.

Örnek

// crt_freopen_s.c
// This program reassigns stderr to the file
// named FREOPEN.OUT and writes a line to that file.
 
#include <stdio.h>
#include <stdlib.h>

FILE *stream;

int main( void )
{
   errno_t err;
   // Reassign "stderr" to "freopen.out": 
   err = freopen_s( &stream, "freopen.out", "w", stderr );

   if( err != 0 )
      fprintf( stdout, "error on freopen\n" );
   else
   {
      fprintf( stdout, "successfully reassigned\n" ); fflush( stdout );
      fprintf( stream, "This will go to the file 'freopen.out'\n" );
      fclose( stream );
   }
   system( "type freopen.out" );
}
  

.NET Framework Eşdeğeri

Ayrıca bkz.

Başvuru

G/ç

freopen, _wfreopen

fclose, _fcloseall

_fdopen, _wfdopen

_fileno

fopen, _wfopen

_open, _wopen

_setmode