Merhaba, hoş geldiniz.
Bu konuşmada şunları yapmak istiyorum önceki
zorluğumuza bir çözüm sağlar; bu da küçük harfli karakterler içeren bir dosyadan
büyük harf karakterleri içerir.
Bu arada, biz de geçici bir dosya, bu yüzden yeniden
adlandırmamız ve silmemiz gerekecek.
Ve nihai çıktı için program dosya olacak.
Dosyada okuyacağız ki zaten büyük harflere dönüştürülmüştü.
Öyleyse kodu getirelim bloklarını seçin, bir proje oluşturun.
Yeni proje diyeceğim, konsol uygulamasını
seçin, c'ye gidin ve buna küçük harfli dosyayı dönüştürme adı verilecek.
Biz sadece Bu bizim ana merkezimiz olsun. c.
Yarattığımızdan emin olmak istiyoruz standart io başlığımız
çünkü okuyacağız ve yazacağız ve fopen ve benzerlerini kullanmak.
Bu yüzden her zaman yapmak istediğim şey dosyayı önden oluşturun.
Bu yüzden burada şunları tanımlayacağım dosya ismim için bir sabit.
Buna tanımlama diyelim.
Ve bu sefer test diyeceğiz. Metin.
Ve bu yüzden diyeceğiz ki dosya adı büyük harflerle yazılır.
Bu kongreyi yapmayı seviyorum.
Ve sonra gerçekten yapacağım projemizdeki dosya adını oluşturun.
Tekrar söylüyorum, dosyalarımı indirilenler dizinimin içinde.
İşte benim bütün projeler depolanır.
Ve bu durumda, bir projemiz var küçük harfli dosyayı dönüştürme olarak adlandırılır.
Doğru yere koyacağım. aynı dizinde,
böylece IDE'den çalıştırabilirim.
Yeni bir metin dosyası oluşturacağım.
Bu teste bir isim vereceğim. Metin.
Ve bunu gündeme getireceğim, ve sadece bazı küçük
ve büyük harf karakterleri koyacağım.
Diyelim ki Jason test yapıyor. Tamam, ne olursa olsun bir testte bazıları büyük harf, bazıları küçük
harf Sonuç olarak, bunlar her zaman
büyük harf olacaktır, bu da başka bir zorluktur.
İşte oldu.
Yani bunun sonucu dosyalar test edilecek. txt dosyasının tümünü
büyük harfle yazın.
Ama biz onu Bazıları büyük harf, bazıları küçük harf.
Şimdi dosyamızı oluşturduk Artık biraz
okuyup yazabiliriz.
Bir çift dosya oluşturacağım dosya ile işaretçiler tüm harfler büyük
dosya ve yıldız fp diyeceğim.
Bunu başlatacağım ve sonra başka bir
dosya işaretçisi oluşturacağım yıldız fp1 ve ayrıca null'a eşittir.
Burada yine iki kişiye ihtiyacım var çünkü Okuma ve yazma
işlemlerini ayrı dosyalara yapacağım, geçici bir dosya aslında.
Ayrıca bir karakter yaratacağım değişkeni, fgetc kullanarak okuduğumuz
karakter olacaktır.
Ve bunu da eşit olarak bırakacağım ya da daha iyisi, sadece boş
dize olarak bırakacağım.
Yapmam gereken ilk şey fp olan ilk dosya için
dosyayı okuma modunda açmanız gerekir ve ikinci dosya geçici bir dosya olacaktır.
Bu yüzden fp eşittir fopen diyeceğim.
Ben de dosya adı testi. Metin.
Yani dosya adı, ve ben gidiyorum sadece okunabilir olarak açmak için.
Ve sonra yapmak istiyorum Bunun boş olduğundan emin olun.
Bu yüzden diyeceğim ki eğer fp eşittir null, o zaman
sadece negatif 1 döndüreceğim.
Sonra geçici dosyamı oluşturmak istiyorum.
Bu yüzden burada geçici bir dosya oluşturun.
Ve bu durumda ben yazmak için bir dosya açın.
Bu yüzden fp1 işaretçimi kullanacağım, ve ben fopen diyeceğim.
Buna sadece Geçici. metin, eğer mevcut değilse
onu yaratacaktır.
Ve sonra koyacağım w çünkü sadece
ona yazacağım.
Tekrar ediyorum, yapmak istediğim şey Burada fp1'in null'a
eşit olmadığından emin olmak istiyorum.
Bu yüzden fp1 diyeceğim.
Eğer null'a eşitse, o zaman ben sadece negatif bir değer döndürecektir.
Şimdi iki dosya açtım, Biri okumak için, biri yazmak için.
Yazma işlemi geçici dosya içindir.
Ve bundan sonra yapmak istediğim şey dosyadan okumaya başlamak ve ardından tüm büyük
harfleri yazmak için.
Bu yüzden bir while döngüsü eklemek istiyorum
okunur ve karakter veri tipi ch'ye eşitken şunu söylemek istiyorum fgetc, ve testimden
okumak istiyorum. metin, yani fp ve ben şunu yapmak istiyoruz Dosyanın sonuna gelmeyene kadar.
Bu yüzden eof ile eşit olmadığını söyleyebilirim.
Eof özel bir sabittir.
while döngümün içinde şunları yapmak istiyorum Okuduğum karakterlerden herhangi birinin küçük harf olup olmadığını
kontrol edin.
Yani eğer küçük ch ise demek istiyorum, eğer küçük harfli bir karakter
bulursam, o zaman sadece karakterinin
büyük harf olması.
Yani ch eşittir ch eksi 32 diyebilirim.
Bu karakteri dönüştürecektir büyük harf karakterine dönüştürür.
Dönüştürdükten sonra, dönüştürülmüş ya da dönüştürülmemiş, büyük harfli ya da değil,
o zaman ben geçici dosyama yazmak istiyorum.
Yani burada fputc diyebilirim.
Ve ben sadece karakterimi söyleyebilirim yazmak istediğim dosya ve fp1
olan dosya işaretçisi.
Yani ne zaman bir karakter okusam, Geçici dosyama yazıyorum.
Ve eğer küçük harf ise, dönüştürüyorum büyük harfe çevirin ve ardından yazın.
Yani bu while döngüsünün sonu Tüm karakterleri
içeren geçici bir dosyam var. Test. büyük harfli metin.
Ve böylece ikisiyle de işim bitti. bu dosyaları okuma ve yazma.
Bu yüzden fclose fp ve fclose fp1 diyebilirim.
Şimdi tempomu yeniden adlandırmak istiyorum dosyasını testime ekledim. metin dosyası.
Yani burada sadece yeniden adlandır diyebilirim, yeniden adlandırma işlevini
çağırabilirim ve temp diyebilirim. Metin Yeniden adlandırmak istediğim şey bu.
Ve benim istediğim yeniden adlandırma testtir. metnini veya dosya adı olan
sabitimi kullanın.
Geçici dosyam hâlâ oluşturulmuş durumda.
Bu yüzden geçici dosyayı silmek istiyorum.
Bu yüzden geçici dosyayı kaldırın.
Burada kaldırmayı çağırabilirim fonksiyonuna aktarın ve temp içinde geçirin. Metin.
Ve sonra istediğim son şey yapmak
istediğim şey, testimin içeriğini yazdırmak. metin dosyası, hangi büyük harfe dönüştürülecektir.
fp'yi kapatmak yerine çünkü teste işaret ediyor. metin, şimdi kapatamazdım,
yapabilirdim sadece fp1'i kapatın çünkü
fp1 geçici idi. metin ve bu da Bir tanesinin adını değiştirip kaldırıyorum.
Aslında kapatmak zorundayım. çünkü adını değiştirdim.
Bu yüzden fp'yi kapatmak zorundayım.
Şimdi 43. satırda, yeniden açmak istiyorum fp çünkü şimdi içeriği okumak ve çıktısını
almak istiyorum.
Yani fp fopen dosya adı diyebilirim veya üzgünüm dosya adı ve ben onu okumak istiyorum.
Bu yüzden sadece "R" diyeceğim.
Tekrar söylüyorum. boş olmadığından emin ol.
Ve eğer eşitse Null, geri dönmek istiyorum.
Ve sadece şunu söylemek istiyorum. negatif bir döndürür.
Bazı girdileri yazdırabilirim.
Ve sonra burada okumak istiyorum ve sadece yazdırın.
Böylece başka bir while döngüsü yapabilirim.
Henüz hiçbir şey basmadık. while
ch eşittir fgetc fp ve eşit değildir eof diyebilmeliyiz.
Ve yapmak istediğimiz şey sadece ch'yi yazdırmak istiyorum.
Bu yüzden yüzde c ch diyebiliriz, ve sonra işimiz biter.
Ve sonra tekrar, sonunda, biz fp olan son dosyayı kapatmak
istiyoruz ve fp'yi null'a ve fp1 null'a eşittir.
O yüzden bunun inşa edildiğinden emin olalım.
Yani gitmeye hazırız.
Derleyebiliyoruz, noktalı virgül koyabiliyoruz 54. sırada bir kolonum vardı.
Yani eğer geri dönersek Bu kod aracılığıyla birkaç dosya
işaretçisi oluşturuyoruz.
Bizim sabitimiz var.
Bir dosya açıyoruz.
Ondan okuyoruz.
Ve okurken, biz geçici bir dosyaya yazın.
Daha sonra geçici dosyayı siliyoruz.
Her iki dosyayı da silmemiz gerekiyor ve geçici dosyadan okuyoruz çünkü yeniden adlandırmamız
ve kaldırmamız gerekiyor.
üzerinde yeniden adlandır veya kaldır diyemeyiz. işlevinde veya zaten açık olan bir dosyada çalışıyorsa, bunları
kapatmamız gerekir.
Sonra tekrar açarız ve verileri yazdırıyoruz.
Bunu çalıştırıyoruz.
Çıktıyı şu şekilde görmeliyiz tüm karakter bilgileri.
Yani bu programı çalıştırdığımızda, göreceğimiz şey, her şeyi büyük harflerle yazdırdığıdır.
Yani tekrar, çalıştırıyoruz, yazdırıyor Her şeyi büyük harflerle yaz.
Eğer dosyaya bakarsak disk, teste bakabiliriz. metnini inceleyeceğiz ve şimdi her
şeyi büyük harfle içerir.
Yine, eğer bunu değiştirmek istersek ve biraz daha küçük harf değiştirin.
Bu yüzden buraya küçük harfle kaydediyoruz Programı çalıştırıyoruz
ve her şeyi büyük harfe dönüştürüyor.
Yine, eğer bunu çalıştırırsak, büyük harf olarak yazdırın.
Bakıyoruz ve hepsi büyük harf.
Yani güzel küçük bir program küçük harfli karakterleri büyük
harfe dönüştürecektir.
Oldukça basit, biz Burada önemli fonksiyonlarımız
olan fopen dosya işaretçilerini kullanıyoruz.
Ve sonra güzel kullanıyoruz fclose kaldır ve yeniden adlandır.
Ve sonra fopen ve fgetc.
Herhangi bir sorunuz varsa, lütfen bana e-posta gönderin.
Bu kaynak dosyayı zip olarak kaydedeceğim dosyasına bir göz atabilirsiniz.
Teşekkür ederim.