Aracılığıyla paylaş


freopen, _wfreopen

Dosya işaretçisi yeniden atar.Bu işlevlerin daha güvenli sürümleri mevcuttur; bkz. freopen_s, _wfreopen_s.

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

Parametreler

  • path
    Yeni dosyanın yolu.

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

  • stream
    FILE yapısı işaretçisi.

Dönüş Değeri

Bu işlevlerden her biri, yeni açılan dosyaya bir işaretçi döndürür.Bir hata oluşursa özgün dosyanın kapalı olduğuna ve işlevini verir bir NULL işaretçisi değeri.Yoksa path, mode, veya stream bir null işaretçi veya filename boş bir dize açıklandığı gibi bu işlevleri geçersiz parametre işleyicisi çağırmak Parametre Doğrulama.Yürütmenin devam etmesine izin verilirse, bu işlevler errno öğesini EINVAL olarak ayarlar ve NULL döndürür.

Bunlar ve diğer hata kodları hakkında daha fazla bilgi için bkz. _doserrno, errno, _sys_errlist ve _sys_nerr

Notlar

Bu işlevlerin daha güvenli sürümleri var, bkz: freopen_s, _wfreopen_s.

freopen İşlevi ile şu anda ilişkili dosyayı kapatır stream ve yeniden atar stream tarafından belirtilen dosyaya path*.*_wfreopen bir geniş karakter sürümü _freopen;  path ve mode bağımsız _wfreopen geniş karakter dizeleridir.Aksi takdirde, _wfreopen ve _freopen aynı şekilde davranır.

Genel Metin Yordam Eşleşmeleri

TCHAR.H yordamı

_UNICODE & _MBCS tanımlanmamış

_MBCS tanımlanmış

_UNICODE tanımlanmış

_tfreopen

freopen

freopen

_wfreopen

freopengenellikle önceden açılan dosyaların yeniden yönlendirmek için kullanılan stdin, stdout, ve stderr kullanıcı tarafından belirtilen dosyaları.Yeni dosya ile ilişkili stream açılmış 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 çağrısı başarısız.

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

  • "a"
    (Ekleyerek yeni veri dosyasına; yazmadan önce EOF işaretini kaldırmadan) dosya sonunda yazma için açar yoksa, dosyayı ilk 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.

  • "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şaretin kaldırılması içerir; yoksa, dosyayı ilk oluşturur.

Kullanım "w" ve "w+" türleri dikkatli olun, var olan dosyaları yok edebilir gibi.

Ne zaman bir dosya açıldığında ile "a" veya "a+" erişim türü, tüm işlemleri meydana dosyanın sonunda yazmak.Dosya işaretçisini kullanarak konumlandırılmasına, ancak fseek veya rewind, tüm işlemi gerçekleştirilir yazmadan önce dosya işaretçisi her zaman geri dosyasının sonuna taşınır.Bu nedenle, varolan verilerin üzerine yazılamaz.

"a" Mod kaldırmaz EOF işaretleyici dosyasına ekleyerek önce.Ekleyerek ortaya çıktıktan sonra MS-DOS TYPE komutunu yalnızca özgün EOF işaretleyici kadar veri ve dosyanın sonuna hiçbir veri gösterir."a+" Modunu kaldırabilirsiniz EOF işaretleyici dosyasına ekleyerek önce.Eklenmesinden sonra MS-DOS türü komut dosyasında tüm verileri gösterir."a+" Modu CTRL + Z EOF işareti ile biten bir akış dosya ekleme için gereklidir.

Zaman "r+", "w+", veya "a+" erişim türü belirtilmediyse, hem okuma hem de yazma izin verilir (Dosya Aç "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şlemi.Geçerli konumu için belirtilen fsetpos veya fseek isterseniz işlemi.Yukarıdaki değerlerin yanı sıra, aşağıdaki karakterlerden birini eklenebilir mode yeni satırlar için çeviri modunu belirtmek için dize.

  • t
    Açık metin (mod çevrilmiş); satır başı (CR-LF) return–linefeed birleşimleri giriş üzerinde tek satır besleme (LF) karakterleri içine çevrilir; LF karakterleri çıktıda CR-LF birleşimleri için çevrilir.Ayrıca, CTRL + Z giriş üzerinde bir dosya sonu karakteri olarak yorumlanır.Dosyalardaki ile okuma ve yazma veya okuma için açılan "a+", çalışma zamanı kitaplığı CTRL + Z dosyanın sonunda olup olmadığını denetler ve, mümkünse kaldırır.Bunu kullanarak yapılır, çünkü fseek ve ftell dosyası içinde taşımak için neden fseek dosyanın sonuna yakın hatalı davranmasına.t ANSI taşınabilirlik burada istendiğini kullanılmaması bir Microsoft uzantısı bir seçenektir.

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

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

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

Gereksinimler

Function

Gerekli başlık

freopen

<stdio.h>

_wfreopen

<stdio.h> or <wchar.h>

Konsol Windows Mağazası uygulamalarında desteklenmiyor.stdin, stdout ve stderr konsolları ile ilişkili standart akış işleyicileri, C çalışma zamanı işlevleri bunları Windows Mağazası uygulamalarında kullanmadan önce yeniden yönlendirilmelidir.Ek uyumluluk bilgileri için bkz. Uyumluluk.

Örnek

// crt_freopen.c
// compile with: /W3
// 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 )
{
   // Reassign "stderr" to "freopen.out": 
   stream = freopen( "freopen.out", "w", stderr ); // C4996
   // Note: freopen is deprecated; consider using freopen_s instead

   if( stream == NULL )
      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

Akış G/Ç

fclose, _fcloseall

_fdopen, _wfdopen

_fileno

fopen, _wfopen

_open, _wopen

_setmode