logo

C'de fgets() işlevi

C programlamada, işleme giriş Ve çıktı faaliyetler şarttır. Fgets() için kullanılabilen birçok fonksiyondan biridir. giriş . Bu sağlam işlevin yardımıyla geliştiriciler belirli bir akıştaki bilgileri güvenli ve kesin bir şekilde okuyabilir. Bu yazımızda bunları inceleyeceğiz giriş Ve çıkışlar ile ilgili fgets() , onun üzerinden geçiyorum sözdizimi, uygulama, örnek kod , Ve Beklenen sonuçlar .

fgets() işlevi , kısa 'dosya dizeyi al' , sıklıkla bir dosya akışından bir dize okumak için kullanılır veya standart giriş (stdin) . Kullanımdan kaldırılanlar için daha güvenli bir alternatif sağlar alır() işlevi Daha önce kullanılmış olan ancak artık bir güvenlik sorunu teşkil eden bir özelliktir. İşlev fgets() Okunan karakter sayısını kısıtlamak için bir araç sunar ve yeni satır karakterlerini etkili bir şekilde işler.

kurt veya tilki

fgets()'ın sözdizimi aşağıdaki gibidir:

 char *fgets(char *str, int size, FILE *stream); 

Parametreler aşağıdaki gibi bölünmüştür:

cadde: Girişi depolamak için kullanılacak karakter dizisine (string) bir referanstır.

boyut: Toplam karakter sayısı (dahil) boş karakter '0' ) okunabilir.

aktarım: İşaretleme aygıtı giriş dosyası akışına veya standart O fgets() itibaren okuyacak.

fgets() işlevinin nasıl çalıştığını daha iyi kavramak için bir örneğe bakalım:

Örnek:

 #include int main() { char input[100]; printf('Enter a string: '); fgets(input, sizeof(input), stdin); printf('You entered: %s', input); return 0; } 

Çıktı:

 Enter a string: Hello, World! You entered: Hello, World! Enter a string: This is a very long string that exceeds the limit of the input buffer. You entered: This is a very long string that exceeds the limit of the input buffer. If a user types an empty text by simply pressing the Enter key: Enter a string: You entered: 

Açıklama:

Yukarıdaki örnekte uygun başlık dosyasını dahil ederek başlıyoruz, 'stdio.h' . Bundan sonra giriş dizesi, 100 boyutunda bir karakter dizisi girişi olarak tanımlanır.

Kullanma printf() işlevi , program kullanıcıdan bir dize girmesini ister. Daha sonrasında, standart olarak kullanılır giriş akışı , Ve fgets() hedef dize olarak girişle birlikte kullanılır, sizeof(giriş) ve okunacak maksimum boyut. Bundan sonra program kullanır printf() Girilen dizenin çıktısını almak için.

Fgets() fonksiyon olabilir Okumak Ve kaydetmek yeni satır karakteri 'N' Maksimum boyuta ulaşılmadan önce görünüyorsa. Giriş satırının tamamen okunup okunmadığını veya alan kısıtlamaları nedeniyle kısaltılıp kısaltılmadığını anlamayı mümkün kılar.

Örnek:

Değiştirilen kod pasajını kullanarak şunları kullanabilirsiniz: strcspn() yöntemi ile silmek the Yeni hat giriş dizesindeki karakter:

 #include #include int main() { char input[100]; printf('Enter a string: '); fgets(input, sizeof(input), stdin); input[strcspn(input, '
')] = ''; // Remove the newline character printf('You entered: %s', input); return 0; } 

Çıktı:

android gamepigeon oynayabilir mi
 Enter a string: Hello World You entered: Hello World 

Açıklama:

Sağlanan karakter kümesinde olmayan karakterlerden oluşan alt dizenin uzunluğu şu şekilde belirlenir: strcspn() işlevi . Bu durumda, boş karakter '0' belirttikten sonra yeni satır karakterini değiştirmek için kullanılır 'N' aranacak karakter kümesi olarak.

Çözüm:

Sonuç olarak okuma giriş dizeleri dosya akışlarından veya C kullanarak standart girişten fgets() yöntemi güvenilir ve güvenlidir. Kullanıcı girişini düzenli bir şekilde işlemek için kullanışlı bir araçtır çünkü giriş için maksimum boyutu seçmenize olanak tanır ve yeni satır karakterlerini işler.

Kullanımdan kaldırılan alır() işlevi daha güvenli olanı ile değiştirilir fgets() işlevi kaynaklanan güvenlik kusurlarını gideren arabellek taşmaları . Giriş dizesinin izin verilenden daha büyük olmamasını sağlayarak olası bellek bozulması sorunlarından kaçınır.

Sağlanan örnek kod, nasıl kullanılacağını gösterir fgets() Kullanıcı girişini yakalamak ve görünüyorsa yeni satır karakterini kaldırmak için doğru şekilde kullanın. Doğru dize işlemeyi sağlamak için girdi kısıtlamalarını dikkate almanın ve yeni satır karakterleriyle ilgilenmenin ne kadar önemli olduğunu vurguluyor.

Geliştiriciler C programlarının güvenliğini ve sağlamlığını şu şekilde geliştirebilirler: fgets() . Giriş için maksimum boyutu tanımlayarak, büyük girişlerin neden olduğu beklenmedik davranışları ve olası güvenlik ihlallerini önleyebilirler.

Gelecek vaat eden C programcıları aşağıdakilere aşina olmalıdır: fgets() Güvenli ve etkili giriş yönetimini sağlamak için kullanım talimatları. Bu işlevin farkında olan geliştiriciler, sıklıkla karşılaşılan girdi kaynaklı güvenlik açıklarına karşı koruma sağlayan daha güvenilir ve emniyetli yazılımlar üretebilir.