CodeBlanks Logo Icon CodeBlanks

fgets ve fputs

  • C kursu
  • Orta seviye
  • Ders 49/116
  • 5 dk

fgets ve fputs ile satır okuyup yazmayı öğrenirsin.

fgets ve fputs

fgets ve fputs, dosyadan satır okuyup dosyaya satır yazmanın temel yoludur. fgets yeni satır karakterini de okur; fputs otomatik yeni satır eklemez.

Örnek: fputs("Merhaba\n", f); dosyaya bir satır yazar. char line[64]; fgets(line, sizeof(line), f); dosyadan bir satır okur. fgets'in ikinci parametresi maksimum okunacak bayt sayısıdır; bu, taşmayı önler. fgets dosya sonuna ulaşınca NULL döner; bu özellik döngülerle tüm satırları okumak için kullanılır.

EOF ve NULL

fgets dosya sonuna ulaşınca NULL döner. Bu özellik, tüm satırları döngüyle okumak için kullanılır. NULL denetimi, döngünün durma koşuludur.

Örnek: while (fgets(line, sizeof(line), f) != NULL) { printf("%s", line); }. Bu döngü, dosyadaki her satırı ekrana yazar. fgets yeni satır karakterini de okuduğu için printf ekstra \n eklemez. Bu desen, metin dosyalarını işlemek için standarttır; günlük (log) dosyaları, yapılandırma dosyaları ve raporlar bu şekilde okunur.

Uygulama Satır yaz, geri oku ve yazdır

FILE *f = fopen("line.txt", "w"); ile aç (NULL denetle). fputs("Merhaba dünya\n", f); ile yaz, fclose(f);. f = fopen("line.txt", "r"); ile yeniden aç. char line[64]; tanımla; fgets(line, sizeof(line), f); ile oku. fclose(f);. printf("%s", line); ile yazdır.

Başlangıç kodu

main.c
#include <stdio.h>

// fopen ile line.txt'yi yazma modunda aç
// fputs ile bir satır yaz
// fclose, sonra okuma modunda yeniden aç
// fgets ile satırı oku, printf ile yazdır

int main(void) {
    return 0;
}

Örnek çözüm

main.c
#include <stdio.h>

int main(void) {
    FILE *f = fopen("line.txt", "w");
    if (f == NULL) return 1;
    fputs("Merhaba dünya\n", f);
    fclose(f);

    f = fopen("line.txt", "r");
    if (f == NULL) return 1;
    char line[64];
    fgets(line, sizeof(line), f);
    fclose(f);

    printf("%s", line);
    return 0;
}

Beklenen çıktı

Merhaba dünya

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 fgets çağrısını tamamla

Soru
fgets(line, ____, f);
Cevap
fgets(line, sizeof(line), f);

Açıklama: sizeof(line) taşmayı önleyen boyut sınırıdır.

2 Fonksiyonları amacına eşle

Kavram Anlamı
fgets Satır okuma
fputs Dize yazma
sizeof(line) Boyut sınırı
NULL EOF göstergesi

3 fgets dosya sonuna ulaşınca ne döner?

  • -1
  • 0
  • NULL Doğru cevap
  • EOF

Açıklama: fgets EOF'ta NULL döner; bu döngü koşulu için kullanılır.

Orta seviye bölümündeki tüm dersler