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
#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
#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
fgets(line, ____, f);
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.