C ile dosyadan okuma

C ile dosyadan okumanın birçok yöntemi var. Ben sizlere en çok kullandığım yöntemi anlatacağım.

Öncelikle read yapacağımız bir dosyamızın olması gerekiyor. Örnek olarak içinde aşağıdaki bilgilerin olduğu bir dosyamız olsun;

EUROVISION WINNERS
2000 – Denmark
2001 – Estonia
2002 – Latvia
2003 – Turkey
2004 – Ukraine
2005 – Greece
2006 – Finland
2007 – Serbia
2008 – Russia
2009 – Norway
2010 – Germany
2011 – Azerbaijan
2012 – Sweden
2013 – Denmark

Ben bu dosyada yılları ve ülkeleri kullanmak istiyorum. Yani benim almam gereken bilgiler 2. satırdan başlıyor. Bir struct tanımlıyorum;

typedef struct{
int year;
char country[20];
} eurovision_t;

main’de eurovision_t türünden bir değişken oluşturuyorum.

eurovision_t eurovision[100];

Bunun yanında aşağıdaki değişkenleride kullanmam gerekiyor.

int i=0

char *str, *str2;
char arr[MAX_SIZE];
FILE *inp;

inp = fopen(“winners.txt”, “r”);

Şimdi gelelim okuma işlemine. str pointer’ına ilk satırı atıyorum fgets fonksiyonu ile. Ama ilk satırla işimiz yok bizim. Bu yüzden tekrar aynı işlemi yapıyorum bu sefer 2. satırı atıyorum. Bilgilerimiz 2. satırda başladığı için burada bir döngü kurmam gerekiyor. Bundan sonraki bütün satırları alıp gerekli değişkenlere atayacağım. Kodlardan çok daha iyi anlayacaksınız.

str = fgets(arr,300,inp);// ilk satırı aldım
str = fgets(arr,300,inp);// ikinci satırda bilgiler başlıyor.

while(str != NULL){
str2 = strtok(arr, ” “); // arr stringinden boşluğa kadar ki kısmı alıp str2’ye atadım.
sscanf(str2,”%d”, &eurovision[i].year); // ve str2’yi sscanf ile integer’a çevirip eurovision[i].year ‘a atadım.
str2 = strtok(NULL, ” “); // kaldığı yerden bir sonraki boşluğa kadar alıp str2 ‘ye atadım. ( – ) yani bunu almış oldum. Kullanmayacağım için tekrar strtok yapacağım.
str2 = strtok(NULL, “\n” ); // alt satıra geçmeden diğer kısmı yani ülke kısmını str2’ye atadım.
strcpy(eurovision[i].country, str2);// stringlerde atama olmadığı için strcpy ile str2’yi eurovision[i].country ‘ye kopyaladaım.

i++;

str = fgets(arr,MAX_SIZE,inp); // yeni bir satır okudum.

}

Strtok, strcpy bunların çalışması için string.h ‘ı eklemeyi unutmayın. Ve en sonda fclose yapmayı unutmuyoruz 🙂

fclose(inp);

Dediğim gibi bu sadece bir yöntemi dosyadan okumanın. Ama bana göre en kullanışlısı. Umarım işinize yarar.

Reklamlar

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Connecting to %s