• Giga@hdv-tech.com
  • 24 Saat Çevrimiçi Hizmet:
    • 7189078c
    • sns03
    • 6660e33e
    • youtube 拷贝
    • instagram

    C, Belge Okuma ve Yazma

    Gönderim zamanı: 11-Ağustos-2023

    C programcısının bir metin dosyasını veya bir ikili dosyayı nasıl oluşturduğunu, açtığını ve kapattığını açıklar.

    Bir dosya, bir metin dosyası veya bir ikili dosya olsun, bir dizi bayt anlamına gelir, C Dili, yalnızca en üst düzey işlevlere erişim sağlamakla kalmaz, aynı zamanda depolama aygıtındaki dosyaları işlemek için temel (OS) çağrısını da sağlar. .Bu bölüm, belge yönetimindeki önemli çağrıları açıklayacaktır.

    açık dosya

    Genellikle yeni bir dosya oluşturmak veya mevcut bir dosyayı açmak için fopen () işlevini kullanan bu çağrı, akışı kontrol etmek için gerekli tüm bilgileri içeren FILE türünde bir nesne başlatır.İşte bu işlev çağrısının prototipi:

    FILE *fopen (const char *dosyaadı, const char *modu);

    Burada dosyaadı bir dosyayı adlandırmak için bir dizedir, erişim modunun değeri aşağıdaki değerlerden biri olabilir:

    model

    Tanım

    r

    Okunmasına izin veren mevcut bir metin dosyasını açın.

    w

    Dosyaya yazmaya izin veren bir metin dosyası açın.Dosya yoksa, yeni bir dosya oluşturulur.Burada programınız içeriği dosyanın başından itibaren yazar.Dosya varsa, sıfır uzunluğa kesilecek ve yeniden yazılacaktır.

    a

    Bir metin dosyası açın ve dosyaya ekleme modunda yazın.Dosya yoksa, yeni bir dosya oluşturulur.Burada, programınız zaten sahip olduğunuz dosyalara içerik ekler.

    r+

    Dosyayı okumanızı ve yazmanızı sağlayan bir metin dosyası açın.

    w+

    Dosyayı okumanızı ve yazmanızı sağlayan bir metin dosyası açın.Dosya zaten varsa, dosya sıfır uzunlukta kesilir ve dosya yoksa yeni bir dosya oluşturulur.

    a+

    Dosyayı okumanızı ve yazmanızı sağlayan bir metin dosyası açın.Dosya yoksa, yeni bir dosya oluşturulur.Okuma dosyanın başında başlar ve yazma yalnızca ekleme modundadır.

    İkili dosya işlenirse, yukarıdakini değiştirmek için aşağıdaki erişim modunu kullanın:

    "rb", "wb", "ab", "rb+", "r+b", "wb+", "w+b", "ab+", "a+b"

    kapalı dosya

    Dosyayı kapatmak için lütfen fclose() işlevini kullanın.Fonksiyonun prototipi aşağıdaki gibidir:

    int fclose (DOSYA *fp);

    • Dosya başarıyla kapatılırsa, fclose() işlevi sıfır, hata ise EOF döndürür.Aslında bu işlev, verileri arabellekten kaldırır, dosyayı kapatır ve o dosya için kullanılan tüm belleği serbest bırakır.EOF, stdio.h başlık dosyasında tanımlanan bir sabittir.

    C standart kitaplığı, dosyaları karakterlere göre veya sabit uzunluklu bir dize olarak okumak ve yazmak için çeşitli işlevler sağlar.

    dosyaya yaz

    Akışa karakter yazmak için en basit işlevler şunlardır:

    int fputc (int c, DOSYA *fp);

    fputc () işlevi, c parametresinin karakter değerini fp'nin işaret ettiği çıkış akışına yazar.Yazmalar başarılı olursa yazılan karakteri ve bir hata oluşursa EOF'u döndürür.Akışa null ile biten bir dize yazmak için aşağıdaki işlevi kullanabilirsiniz:

    int fputs ( const char *s , FILE *fp );

    fputs () işlevi, s dizesini fp'nin işaret ettiği çıkış akışına yazar.Yazma başarılı olursa, negatif olmayan bir değer ve bir hata oluşursa EOF döndürür.Dosyaya bir dizi yazar int fprintf (FILE * fp, const char * format,...) işlevini de kullanabilirsiniz.Aşağıdaki örneği deneyin:

    Not: Kullanılabilir bir tmp dizini olduğundan emin olun ve yoksa, önce bilgisayarınızda oluşturmanız gerekir.

    / tmp genellikle Linux sistemindeki geçici bir dizindir.Windows sisteminde çalıştırıyorsanız, yerel ortamda var olan bir dizine değiştirmeniz gerekir, örneğin: C:\tmp, D:\tmp, vb.

    yaşayan örnek

    #katmakint ana () { DOSYA *fp = NULL ;fp = fopen ("/tmp/test.txt ", "w+");fprintf (fp , "Bu, fprintf'i test ediyor...\n ");fputs ("Bu, fput'ları test ediyor...\n ", fp );fkapat (fp);}

    Yukarıdaki kod derlenip çalıştırıldığında, /tmp dizininde yeni bir test.txt dosyası oluşturur.Ve iki farklı işlevi kullanarak iki satıra yazar.Şimdi bu dosyayı okuyalım.

    dosyayı oku

    Aşağıdaki, bir dosyadan tek bir karakter okumak için en basit işlevdir:

    int fgetc (DOSYA * fp);

    fgetc () işlevi, fp'nin işaret ettiği giriş dosyasından bir karakter okur.Dönen değer, okunan karakter ve bir hata oluşursa EOF'tur.Aşağıdaki işlev, bir akıştan bir dize okumanıza izin verir:

    char *fgets (char *buf, int n, FILE *fp);

    fgets () işlevi, fp tarafından yönlendirilen giriş akışından n-1 karakter okur.Okunan dizgiyi ara belleğe kopyalar ve dizgiyi sonlandırmak için sonuna boş bir karakter ekler.

    Bu işlev, son karakteri okumadan önce '\ n' kesikli bir satır karakteriyle veya dosyanın sonundaki EOF ile karşılaşırsa, satır sonları da dahil olmak üzere yalnızca okunan karakterlere döndürülür.Diziyi dosyadan okumak için int fscanf (FILE * fp, const char * format,...) işlevini de kullanabilirsiniz, ancak ilk boşluk ve satır sonu ile karşılaştığında okumayı durdurur.

    yaşayan örnek

    #katmakint ana () { DOSYA *fp = NULL ;karakter tutkunu [255];fp = fopen ("/tmp/test.txt ", "r ");fscanf (fp, "%s", güçlendirme);printf ("1: %s \n ", buff );fgets (buff , 255, (DOSYA *)fp );printf ("2: %s \n ", buff );fgets (buff , 255, (DOSYA *)fp );printf ("3: %s \n ", buff );fkapat (fp);}

    Yukarıdaki kod derlendiğinde ve yürütüldüğünde, önceki bölümde oluşturulan dosyaları okuyarak aşağıdaki sonuçları üretir:

    1: Bu 2: fprintf için test ediliyor...

    3: Bu, fput'ları test ediyor...

    İlk olarak, fscanf() yöntemi, arkada bir boşlukla karşılaştığı için yalnızca This'i okur.İkinci olarak, satırın sonuna kadar kalan kısmı okumak için fgets() işlevini çağırın.Son olarak, ikinci satırı tamamen okumak için fgets () öğesini çağırın.

    İkili G/Ç işlevi

    İkili giriş ve çıkış için aşağıdaki iki işlev kullanılır:

    size_t fread (void *ptr, size_t size_of_elements, size_t element_of_ements, FILE *a_file);size_t fwrite (const void *ptr , size_t size_of_elements , size_t elementlerin_sayısı , FILE *a_file );

    Her iki işlev de, genellikle diziler veya yapılar olmak üzere depolama blokları için okunur ve yazılır.

    Yukarıda C dosyası okuma ve yazma hakkında bir yazılım teknik operasyonu olan HDV Phoelectron Technology Ltd.'ye aittir.Ve ağla ilgili ekipman için şirket (örneğin: ACONU/ iletişimONU/ zekiONU/ lifONU, vb.) güçlü bir yazılım ekibini bir araya getirdi, her müşteri için ihtiyacı olan özel talepleri özelleştirdi, ayrıca ürünlerimizi daha akıllı ve gelişmiş hale getirdi.



    web sitesi