İlk olarak bir dosyayı karakter karakter olarak okumak için kullanılan fgetc() 'nin kullanımına bakalım.
int fgetc( FILE * );
Burada dikkat edilmesi gereken fgetc 'nin int deger döndürmesi. Okunan karakterin degeri veya EOF dönebilir. Sık yapılan bir hata fgetc 'nin dönüş değerini char değişkene atanması sonucu ortaya çıkıyor. Örnek olarak verilen bir dosyayı karakter karakter okuyup ekrana basan ve satırları sayan koda bakalım.int DosyayıEkranaYaz( FILE * fp )
{
int ch;
int cnt = 1;
while( (ch = fgetc(fp)) != EOF)
{
putchar( ch );
if(ch == '\n')
cnt++;
}
return cnt;
}
fgetc 'nin kullanımı bu şekilde. Bir başka sorun da feof() fakat bence bu fonksiyonu kullanmaya gerek yok çünkü bütün fonksiyonlar dosya sonunu bir şekilde belirtiyorlar zaten. Örneğin fgets dosya sonunda NULL dönüyor. Dosyayı satır satır okumak istersek şöyle bir kod kullanabiliriz.#include <stdio.h>
int main()
{
FILE * fp = fopen("deneme.txt", "r");
char satir[100];
while( fgets(satir, sizeof(satir), fp) != NULL )
fputs(satir, stdout);
fclose(fp);
return 0;
}
Metin dosyalarını okumak için genel olarak bu bilgiler yeterli. İkili dosya işlemleriyle ilgili de belki daha sonra yazarım.
2 yorum:
birşey sorabilirmiyim ?
C de dosyadan okuma yapmam gerekiyor fakat istedigim satırdan okumaya başlamak ve istedigim aralıkları atlamayı nasıl yaparım
Bu uygulamanızın ve okumak istediğiniz dosyanın yapısına göre değişir. Belirli bir sayıda satır atlamak için döngü içinde fgets ile okuma yapıp sonucu yok sayabilirsiniz. Belirli kısımları atlamak için de fscanf kullanabilirsiniz. Ör: "Değer 1: 123, Değer 2: 2345" satırından sadece değerleri okumak için fscanf(fp, "Değer %d: %d, Değer %d, %d", id1, val1, id2, val2) gibi. Dosyanızın yapısı daha belirli ise ikili okuma yapmak için fread, fseek gibi fonksiyonlara bakabilirsiniz.
Yorum Gönder