Merhaba, tekrar hoş geldiniz.
Bu konferansta şunları sağlamak istiyorum Bir dosyadan
okuma için ilk zorluğumuzun bir gösterimi.
Sayacağız. fgetc kullanarak bir dosyanın içindeki satırlar.
Şimdi kod bloklarını gündeme getirelim, ve projemizi oluşturalım.
Burada sadece şunu söyleyeceğiz yeni bir
proje ve temel bir okuma hizalaması olacak.
Diyelim ki konsol uygulaması c olarak adlandıracağız ve bu temel veya sayılan
satır sayısını satır sayısı hakkında.
Ve böylece bu bizim ana. c ki bu iyi.
Bu uygulamaya başlamadan önce Yine de, içinde bazı metinler bulunan dosyamızı
oluşturmak istiyoruz.
Yazmadığımız için, sadece satır sayısında okuma.
Yani nerede olduğunu bilmek zorundasın. projenizi kaydettiniz.
Projelerimi içeride saklıyorum indirilenler dizinimde.
Ve yeni bir proje oluşturduğunuzda indirilenler dizininizin içinde,
bu proje adına gidersiniz.
Benim projemin adı satır sayısını sayar.
Yani içeride sayım sayısı Hatlar, benim ana hatlarım var. c dosyası.
Dosyamı oluşturabilirim bu dizinde.
Bu yüzden ben sadece doğru gidiyorum dizinin içine tıklayın
ve yeni diyeceğim ve ben bir metin dosyası oluşturacak.
Bu yeni bir metin belgesidir, ve bu bir test olacak. Metin.
Açacağım.
Herhangi bir yerde açabilirsiniz editör, bu wordpad.
İçine koyacak Birkaç satır, merhaba.
Bu, aşağıdakiler için test olacaktır muhasebe, tamam, bir, sadece bir grup satır ve sonra
sen bunu kaydetmek ve kapatmak istiyorum.
Artık dosyamı oluşturduğuma göre, şunları yapabilirim aslında bir şeyler uygulamaya başlayın.
Yapmak istediğim ilk şey dosya adı için sabit bir
değişken oluşturmak istiyorum.
Bu yüzden sadece define kullanacağım.
Bu benim dosya adımı temsil edecek.
Sadece dosya adını söyleyeceğim büyük harfler ve bu, az önce
adlandırdığım şeye eşit olacak, ki bu yine test. metin, yani test. Metin.
Ve tüm kodlarım ana işlevim olacak.
Dosya işaretçimi oluşturmak istiyorum.
Bir dosya işaretçisi oluşturmayı unutmayın, sadece büyük harflerle DOSYA kullanın ve sonra yıldız
deyin ve sonra sadece fp diyebilirsiniz.
Ve ben gidiyorum bunu null olarak başlatın.
Ne zaman dosya okuma yaparsanız ve yazarken, standart kütüphaneyi dahil ettiğinizden
emin olmalısınız. h.
Aynı zamanda tek bir kullanılacak karakter.
Sadece Char diyeceğim, ve sonra tüm hatlarım için bir
sayaç oluşturacağım.
Ben int satırlarının sayıldığını söyleyeceğim.
Ve bunu 0 olarak başlatacağım.
Ne zaman yapmanız gereken ilk şey dosyalardan herhangi bir şekilde
okuma yapıyorsanız, dosyayı açmanız gerekir.
Yani f açık fonksiyonu şöyledir bir dosya işaretçisi döndürecektir.
Bu yüzden bunu benim fp değişkeni ve f open demek istiyorum
ve dosyanın adı Daha önce tanımladığım isim sabit bir dosya
ismidir.
Ve okumak için açmak istiyorum ve sadece okuyorum, bu yüzden sadece r diyorum.
Bu yüzden burada fopen ile dosya adı ve ardından çift tırnak içinde
r, bu bizim modumuz.
Sadece okumak istiyorum.
Yazmak istemiyorum.
Eğer bir r artı yapsaydım yazabilirdi.
İşaretçiyi kullanmadan önce işaretçisi dosyayı temsil eder.
Emin olmak istiyorum ki işaretçi null'a eşit değil, bu yüzden
bir f yapmak istiyorum.
fp'nin null'a eşit olduğunu söylemek istiyorum.
Sonra null'a eşitse, sadece karşılığında bir hata görüntülemek istiyorum.
Yani şöyle bir şey yapmak istiyorum printf dosyası mevcut değil, ne yapmak isterseniz
yapın.
Ve bu o zaman olacak.
Sadece geri dönmek isteyeceğiz fonksiyonumuzdan negatif bir 1.
Dosyayı açtıktan sonra, şimdi karakterleri okumaya başlayabilir,
böylece bir while döngüsü yazabilir ve bir karakter olan karakterimiz fgetc'ye eşitken
söylemek istiyoruz.
Fgetc tek bir karakter okuyor.
Dosya işaretçimizi geçiyoruz ve temel olarak bir eof görene kadar karakterleri
okumak istediğimizi söylemek istiyoruz.
Bu yüzden eof'ye eşit olmayana kadar diyeceğiz.
Sonra da döngümüz, bunun gibi bir şey.
Bu yüzden karakterleri okuyacağız Dosyanın sonuna gelene kadar.
Karakterimiz bu olmadığı sürece bir satır beslemesi gördüğümüzde, yalnızca bir satır beslemesi gördüğümüzde
artırmak istiyoruz.
Yani diyeceğiz ki eğer karakterimiz bir satır beslemesine eşitse, temel olarak sayacımızı
artırmak isteriz.
Sadece çizgilerin artı sayıldığını söylemek istiyoruz. artı, bu bizim hatlarımızı sayacak.
Ve sonra döngüden çıkıyoruz dosyanın sonuna geldiğimizde.
Ancak biz sadece bir satır beslemesi alırsak hesaplayın.
Her zaman yapmak isteyeceğiniz son şey Yazınızı okumayı bitirdikten sonra dosyanızı kapatmak
istiyorsunuz.
Yani fclose demek istiyorsun ve ardından dosya işaretçisini iletin.
Ve sonra da ayarlamak isteriz dosya işaretçimiz null'a eşittir.
Ve sonra yazdırabiliriz çalıştırdığımız satır sayısı.
Yani sadece printf toplam sayı diyebiliriz satır sayısı r yüzde d ters eğik çizgi n ve sonra sadece satır
sayısı koyabiliriz.
Ve sonra sadece geri dön ana, aynen böyle.
Bu kodu tekrar gözden geçirmek için dosya işaretçimizi oluşturun
null olarak ayarlayın bir karakter ve bir yerel satırları saymak için değişken.
Dosyamızı 12. satırda açıyoruz.
Sadece okuma modunda açıyoruz.
Null olmadığından emin oluruz ve 'e kadar her karakteri okumak için while
döngümüzü yaparız. Dosyanın sonuna geldik.
Ne zaman bir hat beslemesi görsek, bu sayacı artırırız.
Ve sonra dosyamızı kapatıyoruz ve işaretçimizi null olarak ayarlayın.
Ve sonra çıktısını alırız satır sayısı.
Devam edelim ve bunu inşa edelim.
Ve fazladan bir hattımız var emin olmak istiyoruz.
Bu yüzden, bunu yapmadığımızdan emin olmak istiyorum. printf'imizdeki virgülü unutun.
Ve şimdi bunu çalıştırıyoruz. oluşturduğumuz dosyadan okur ve bize
kaç satırımız olduğunu söyler.
Yani toplam sayı diyor satır sayısı altıdır.
Metin dosyamızı açarsak, şunları yapmalıyız altı satır olduğuna dikkat edin, bir, iki,
üç, dört, beş, altı.
Aslında yedi tane var.
Bu yüzden de Eof'u alana kadar sonuncusu.
İşte burada küçük bir hata var çünkü bu bizim son satır beslememizi
yapıyor dosyanın sonuna gelmeden önce.
Yani aslında sahip olmak istersiniz Bu bir tane daha olacak ve sonra onu çalıştıracağız ve gerçekten
çalışacak.
Yani bu durumda biz birkaç satır ekle.
Ve bu durumda, bizim bir, iki, üç, dört, beş, altı, yedi,
sekiz, dokuz satır.
Dosyayı kapatıyoruz.
Tekrar çalıştırıyoruz, derliyoruz ve dokuz tane almalıyız.
Bu durumda 9 elde ederiz.
Bu yüzden bu kaynak kodunu kaydedeceğim.
İndirebilirsiniz.
Bu okumanın temelleri fgetc kullanarak bir dosyadan veri.
Sen de olmak istiyorsun fgets'e aşina.
Ve sonra çıktıyı biçimlendirmek için fscanf biçimlendirilmiş çıktıyı okumak için.
Umarım bu yardımcı olmuştur. Teşekkür ederim.