CodeBlanks Logo Icon CodeBlanks

fprintf ve fscanf

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

fprintf ve fscanf ile dosyaya yazıp okumayı öğrenirsin.

fprintf ve fscanf

fprintf ve fscanf, dosyaya formatlı veri yazıp okumanın temel yoludur. printf ve scanf gibi çalışırlar; farkı ilk parametre olarak FILE* alırlar.

Örnek: fprintf(f, "%d %s\n", 25, "Ayşe"); dosyaya 25 Ayşe yazar. fscanf(f, "%d %s", &age, name); dosyadan bir tamsayı ve bir dize okur. Format belirticileri (%d, %s, %f) printf/scanf ile aynıdır. fscanf'te tamsayı için & (adres) şarttır; dize için gerekmez çünkü dize adı zaten işaretçidir.

Adres operatörü

fscanf ile tamsayı okurken & (adres) operatörü şarttır. Çünkü fscanf değeri değişkende saklamak için değişkenin adresine yazar. Dizelerde & gerekmez.

Örnek: int age; fscanf(f, "%d", &age);. Burada &age, age'in adresidir. fscanf bu adrese okunan değeri yazar. Ama char name[32]; fscanf(f, "%s", name);'te & yoktur; çünkü name zaten dizinin başlangıç adresidir. Bu ayrım, C'de işaretçi ve dizi ilişkisinin temelidir; unutulduğunda derleyici uyarı verir.

Uygulama Veri yaz, geri oku ve yazdır

FILE *f = fopen("data.txt", "w"); ile aç (NULL denetle). fprintf(f, "%d %s\n", 25, "Ayşe"); ile yaz, fclose(f);. f = fopen("data.txt", "r"); ile yeniden aç. int age; char name[32]; tanımla; fscanf(f, "%d %31s", &age, name); ile oku. fclose(f);. printf("%d %s\n", age, name); ile yazdır.

Başlangıç kodu

main.c
#include <stdio.h>

// fopen ile data.txt'yi yazma modunda aç
// fprintf ile 25 ve "Ayşe" yaz
// fclose, sonra okuma modunda yeniden aç
// fscanf ile oku, printf ile yazdır

int main(void) {
    return 0;
}

Örnek çözüm

main.c
#include <stdio.h>

int main(void) {
    FILE *f = fopen("data.txt", "w");
    if (f == NULL) return 1;
    fprintf(f, "%d %s\n", 25, "Ayşe");
    fclose(f);

    f = fopen("data.txt", "r");
    if (f == NULL) return 1;
    int age;
    char name[32];
    fscanf(f, "%d %31s", &age, name);
    fclose(f);

    printf("%d %s\n", age, name);
    return 0;
}

Beklenen çıktı

25 Ayşe

Soru ve cevaplar

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

1 Fonksiyonları amacına eşle

Kavram Anlamı
fprintf(f, ...) Dosyaya yazma
fscanf(f, ...) Dosyadan okuma
%d Tamsayı formatı
%s Dize formatı

2 Hangi fonksiyon dosyadan int okur?

  • scanf
  • fscanf(f, "%d", &x) Doğru cevap
  • fgets
  • fgetc

Açıklama: fscanf, FILE* parametresiyle dosyadan formatlı okur.

3 fscanf çağrısını tamamla

Soru
fscanf(f, "%d", &____);
Cevap
fscanf(f, "%d", &age);

Açıklama: &age, age değişkeninin adresini verir.

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