Kullanıcı dosyasında okunan veriyi bazen parçalamak durumunda kalırsınız.Mesela dosyada öğrencilere ait yazılı notlarını okumanız isteniyorr.
Mehmet Sağlam 80 70 54
Nergis Şekerci 65 80 44
Aydın Bulut Kahraman 26 68 71
Can Sağlam 56 58 74
Damla Ezgi Demir 89 96 100
Şeklindeki ogrenci yapısı içindeki isim soyisim ve not dizilerina atamanız isteniyor.Bunun için normalde fscanf gibi fonksiyonları kullanabilirsiniz.Fakat yukarıdaki veriyi bu şekilde okumaya kalktığınızda Aydın Bulut Kahraman adlı öğrencinde Aydın-isim, Bulut-soyisim değişkenine atanır.Dolayısıyla Kahraman kelimesinin not değişkenine atanması gerekir.(not değişkeni char not[] şeklinde bir karakter dizisi olsun.)
Bu durumda yapıyı kelime kelime, yerine satır satır okuma işlemini kullanabiliriz.
char veri[100]; şeklinde bir char dizisi tanımlayalım.
getline(veri, 100) ile bu veriyi okuyalım.
Şimdi elimizdeki verinin 3 ya da iki isimli oluşuna göre atama yapmamız gerekiyor.Bunun için önce strtok dizgi parçalama fonksiyonu ile okuduğumuz satırı parçalayalım.
char *pch;
pch=strtok(veri," .,-\t\n");
Şimdi parça sayısına göre isim, soyisim dizilerine okuduğmuz verileri kopyalayalım.
int i=0;
while(pch!=NULL){
if(i==0)
strcpy(isim,pch); /* İlk okunan değer isim değişkenine atanır.
if(i==1){
strcpy(soyisim,pch); /*İkinci okunan değer soyisim değişkenine atanır.
strcpy(yedek, pch); /*İkinci okunan değer 3 isimli olma ihtimaline karşın yedek bir
. } /*değişkene atanır
if(i==2){
strcat(isim, " ");
strcat(isim, yedek); /* i değişkeni 2 olursa 3. isim var demektir.Bu durumda isim
strcpy(soyisim, pch); /*değişkenine ilk okunan ismin yerine boşluk karakteri ve
} /* ikinci isim atanır. 3. okunan değer ise soyisim değişkenine
pch=strtok(NULL," .,- \t\n"); /* atanır.
i++;
}
Yukarıdaki yapı dosyadan okuma sırasında oluşabilecek bu tür durumlarda kullanılabilir.
Hiç yorum yok:
Yorum Gönder