Bir prizmada ışınların yolunu oluşturun. Stepanova V.A. geometrik optiğin unsurları

fopen() işlevi, kullanım için bir akışı açar, bir dosyayı bu akışla ilişkilendirir ve ardından bu akışa bir FILE işaretçisi döndürür. Çoğu zaman dosya bir disk dosyası olarak değerlendirilir. fopen() işlevi aşağıdaki prototipe sahiptir:

DOSYA *fopen(const char *dosya adı, const char *mode);

Modun, dosyayı açmak için istenen modu içeren bir dizeye işaret ettiği yer. Borland C++'da mod için geçerli değerler tabloda gösterilmektedir. dosya adı, geçerli bir dosya adı sağlayan bir karakter dizisi olmalıdır işletim sistemi ve bir yol göstergesi içerebilir.

fopen() işlevi, FILE temel türüne bir işaretçi döndürür. Bu işaretçi dosyayı tanımlar ve çoğu işlev tarafından kullanılır. dosya sistemi. Asla kendiniz değiştirmemelisiniz. Dosya açılamıyorsa işlev bir boş gösterici döndürür.

Tabloda görüldüğü gibi dosya metin veya ikili modda açılabilir. Metin modunda, siz yazarken satırbaşları ve satır besleme sırası yeni satır karakterine çevrilir. Çıktıda ise bunun tersi doğrudur: yeni satır karakteri satır başı ve satır beslemeye çevrilir. Bu çeviri ikili dosyalarda oluşmaz. Mode argümanında ne t ne de b belirtilmediğinde, dosyanın metin/ikili durumu Borland C++'da tanımlanan _fmode global değişkeninin değeri tarafından belirlenir. Varsayılan olarak fmode O_TEXT olarak ayarlanmıştır, yani metin modu ayarlanmıştır. _fmode'u O_BINARY olarak ayarlarsanız dosyalar ikili modda açılacaktır. (Bu makrolar fcntl.h'de tanımlanmıştır.) Doğal olarak, açık bir t veya b kullanılması, _fmode değişkeniyle ilişkili etkileri ortadan kaldırır. Ayrıca _fmode Borland ürünlerine özeldir. ANSI C I/O sisteminde tanımlanmamıştır.

Yazmak için test adlı bir dosyayı açmanız gerekiyorsa şunu yazmalısınız:

Fp = fopen("test", "w");

fp nerede tip değişkeni DOSYA *. Ancak aşağıdakileri görmek yaygındır:

If((fp = fopen("test", "w"))==NULL) (
puts("Dosya açılamıyor.");
çıkış(1);
}

Bu yöntem Bir dosyayı açarken, örneğin yazma korumasının varlığı veya eksikliği gibi hataları tespit etmenizi sağlar. boş alan diskte.

Bir dosyayı yazmak üzere açmak için fopen() kullanılırsa, belirtilen adda önceden var olan herhangi bir dosya silinecektir. Belirtilen isimde bir dosya mevcut değilse oluşturulacaktır.

Dosyanın sonuna bilgi eklemeniz gerekiyorsa a (ekleme) modunu kullanmalısınız. Dosya mevcut değilse oluşturulacaktır.

Bir dosyayı okumak için açmak, dosyanın varlığını gerektirir. Dosya mevcut değilse bir hata döndürülür. Dosya okuma/yazma işlemi için açılırsa, varsa silinmez, yoksa oluşturulur.

Masa: Geçerli değerler modlar

Anlam

Okumak için bir dosya açar. (Varsayılan olarak metin dosyası olarak açılır.)

Yazılacak bir dosya oluşturur. (Varsayılan olarak metin dosyası olarak açılır.)

Bir dosyaya eklenir. (Varsayılan olarak metin dosyası olarak açılır.)

Okumak için bir ikili dosyayı açar.

Yazmak için bir ikili dosyayı açar.

Bir ikili dosyaya eklenir.

Okumak/yazmak için bir dosya açar. (Varsayılan olarak metin dosyası olarak açılır.)

Bir okuma/yazma dosyası oluşturur. (Varsayılan olarak metin dosyası olarak açılır.)

Bir okuma/yazma dosyası ekler veya oluşturur. (Varsayılan olarak metin dosyası olarak açılır.)

Okuma/yazma için bir ikili dosya açar.

Okuma/yazma ikili dosyası oluşturur.

Okuma/yazma ikili dosyasını ekler veya oluşturur.

Yazmak için bir metin dosyası oluşturur.

Bir metin dosyasına eklenir.

Okumak için bir metin dosyasını açar.

Okuma/yazma için bir metin dosyası oluşturur.

Okumak/yazmak için bir metin dosyası açar veya oluşturur.

Programcı için dosyayı aç Okunan veya yazılan veri dizisi olarak temsil edilir. Bir dosya açıldığında, onunla ilişkilendirilir. G/Ç akışı . Çıkış bilgileri akışa yazılır, giriş bilgileri akıştan okunur.

G/Ç için bir akış açıldığında stdio.h'de tanımlanan standart bir FILE yapısıyla ilişkilendirilir. FILE yapısı şunları içerir: gerekli bilgiler dosya hakkında.

Bir dosyanın açılması, dosya üzerinde daha sonraki işlemler için kullanılabilecek FILE tipindeki yapıya bir işaretçi döndüren fopen() işlevi kullanılarak yapılır.

DOSYA *fopen(isim, tür);

name – açılacak dosyanın adı (yol dahil),
type - dosyaya nasıl erişildiğini tanımlayan bir karakter dizisinin işaretçisi:

· "r" - dosyayı okumak için açın (dosya mevcut olmalıdır);

· "w" - yazmak için boş bir dosya açın; dosya mevcutsa içeriği kaybolur;

· "a" - dosyayı sonuna kadar yazmak üzere açın (eklemek için); dosya mevcut değilse oluşturulur;

· "r+" - dosyayı okumak ve yazmak için açın (dosya mevcut olmalıdır);

· "w+" - okumak ve yazmak için boş bir dosya açın; dosya mevcutsa içeriği kaybolur;

· "a+" - dosyayı okumak ve eklemek için açın; eğer dosya mevcut değilse oluşturulur.

Dönüş değeri açık akışın bir işaretçisidir. Bir hata tespit edilirse NULL döndürülür.

fclose() işlevi, fopen() işlevi kullanılarak açılan dosyalarla ilişkili akışı veya akışları kapatır. Kapatılacak akış fclose() fonksiyonunun argümanı tarafından belirlenir.

Dönüş değeri: akış başarıyla kapatılmışsa 0 değeri; Bir hata meydana gelirse sabit EOF.

#katmak
int ana()

karakter adı = "my.txt";

if(fp = fopen(isim, "r")!=NULL)

// dosyayı açmak mümkün müydü?
... // veriler üzerinde gerekli işlemler

else printf("Dosya açılamadı");

Dosyadan karakter okuma:

char fgetc(akış);

İşlev bağımsız değişkeni, FILE türündeki bir akışın işaretçisidir. Fonksiyon okunan karakterin kodunu döndürür. Dosyanın sonuna gelindiğinde veya bir hata meydana geldiğinde EOF sabiti döndürülür.
Bir dosyaya sembol yazma:

fputc(karakter, akış);

Fonksiyonun argümanları bir karakter ve FILE tipindeki bir akışı gösteren bir işaretçidir. Fonksiyon okunan karakterin kodunu döndürür.

fscanf() ve fprintf() işlevleri, scanf() ve printf() işlevlerine benzer, ancak veri dosyalarıyla çalışır ve ilk argümanları olarak dosyaya yönelik bir işaretçiye sahiptir.

fscanf(akış, "Giriş Formatı", argümanlar);
fprintf(akış, "Çıktı Formatı", argümanlar);

fgets() ve fputs() işlevleri dize girişi/çıkışı için tasarlanmıştır; dosyalarla çalışmak için kullanılan gets() ve puts() işlevlerine benzerler.

fgets(Çizgi İşaretçisi, Karakter Sayısı, akış);

Dizenin içerdiği yeni satır karakteri "\n" okununcaya veya akış EOF bitene veya maksimum sayıda karakter okunana kadar akıştan karakterler okunur. Sonuç bir dize işaretçisine yerleştirilir ve "\0" boş karakteriyle biter. Fonksiyon dizenin adresini döndürür.

fputs(Dize İşaretçisi, akış);

Geçerli konumdan akışa bir dize kopyalar. Sonlandırıcı boş karakter kopyalanmaz.
Örnek Numarayı girin ve s1.txt dosyasına kaydedin. Sayıyı s1.txt dosyasından okuyun, 3 artırın ve s2.txt dosyasına kaydedin.

Metin dosyaları

Bir örnek kullanarak C'de bir metin dosyasıyla çalışmaya bakalım. C sürücüsünde TextFile.txt adlı bir metin dosyası oluşturun. Bu dosyaya aşağıdaki satırları yazın:

Dize_1 123 Dize_11, 456
Dize_2
Dize_3

Dosyayı kaydedin.

Bu da dosyamızı açan ve içindeki satırları okuyan bir C programının kodudur:

/* *Yazar: @author Subbotin B.P..h> #include #define LEN 50 int main(void) ( puts("Metin dosyası işlemleri"); char cArray; FILE *pTextFile = fopen("C:\\TextFile.txt", "r"); if(pTextFile == NULL) ( puts("Problemler"); return EXIT_FAILURE; ) while(fgets(cArray, LEN, pTextFile) != NULL) ( printf("%s", cArray); ) fclose(pTextFile); return EXIT_SUCCESS;

C'de bir metin dosyasını açmak için fopen işlevini kullanın:

DOSYA *pTextFile = fopen("C:\\TextFile.txt", "r");

Fopen fonksiyonunun ilk argümanı bir dosyayı işaret eder, ikincisi ise dosyanın okunmaya açık olduğunu söyler.

Fgets fonksiyonunu kullanarak satırları okuyoruz:

fgets(cArray, LEN, pTextFile);

fgets fonksiyonunun ilk argümanı, alınan dizelerin saklanacağı karakter dizisini işaret eder, ikinci argüman ise maksimum miktar Okunacak karakterler, üçüncüsü dosyamızdır.

Dosyayla çalışmayı bitirdikten sonra dosyayı kapatmanız gerekir:

fclose(pTextFile);

Şunu elde ederiz:

Satırlarda Rusça harfler de yer alıyor.

Bu arada bu programı Eclipse'de yaptım. Eclipse'de C/C++ ile nasıl çalışılacağını görebilirsiniz.

Böylece bir metin dosyasındaki verileri açtık ve okuduk.

Şimdi programlı olarak bir metin dosyasının nasıl oluşturulacağını ve ona veri yazılacağını öğreneceğiz.

/* Yazar: @author Subbotin B.P..h> #include int main(void) ( FILE *pTextFile = fopen("C:\\TextFileW.txt", "w"); char *cString = "Bu bir dizedir"; char cNewLine = "\n"; int nVal = 123 ; if(pTextFile == NULL) ( puts("Problemler"); return EXIT_FAILURE; ) fprintf(pTextFile, "%s%c", cString, cNewLine);

Verilerin yazılacağı bir metin dosyası oluşturun:

DOSYA *pTextFile = fopen("C:\\TextFileW.txt", "w");

dosya zaten mevcutsa açılacak ve içindeki tüm veriler silinecektir.

C-string cString ve nVal sayısı program tarafından bir metin dosyasına yazılır. cNewLine sadece yeni bir çizgidir.

Fprintf işlevini kullanarak verileri bir metin dosyasına yazıyoruz:

fprintf(pTextFile, "%s%c", cString, cNewLine);

Buradaki ilk argüman dosyamız, ikincisi format dizesi, üçüncü veya daha fazlası bu format için gereken argüman sayısıdır.



Makaleyi beğendin mi? Arkadaşlarınızla paylaşın!