Tekil Mesaj gösterimi
  #1 (permalink)   iTrader 
Alt 2007-01-11, 20:33
SLiM_BoY - ait Kullanıcı Resmi (Avatar)
SLiM_BoY SLiM_BoY isimli üyemiz çevrimdışıdır. (Offline)
Gold Member
 
Üyelik tarihi: Aug 2005
Nerden: I live in English :p
Mesajlar: 1.459
Tecrübe Puanı: 4
iTrader: %100/4
SLiM_BoY has a spectacular aura about
Standart C'de dosya okuma ve metin ayıklama işlemi

C'de bir metin dosyasında bulunan tarihleri ayıklayan bir program var. Fakat dosya işlemleri konusunda zayıf olduğum için 1-2 yerini anlayamadım. Mesela

Kod:
const char *ctrl = "%2u %*1[./-] %2u %*1[./-] %u %*[^ 0123456789]";
bu satırda const char *ctrl 'nin görevi nedir ?

Kod:
return fscanf(fptr, ctrl, gun, ay, yil) == 3
bu satırda neden 3'e eşitledi ?

Programın tam hali :

Kod:
#include <stdio.h>

int tarih_oku(FILE *fptr, unsigned *gun, unsigned *ay, unsigned *yil)
{
    const char *ctrl = "%2u %*1[./-] %2u %*1[./-] %u %*[^ 0123456789]";
    fscanf(fptr, "%*[^0123456789]");
    return fscanf(fptr, ctrl, gun, ay, yil) == 3;
}

void tarihleri_al(FILE *fptr)
{
    unsigned gun_ = 0, ay_ = 0, yil_ = 0;

    while(!feof(fptr))
        if (tarih_oku(fptr, &gun_, &ay_, &yil_))
            printf("Bulunan tarihler: %u/%u/%u\n", gun_, ay_, yil_);
}

int main(void)
{
    puts("Tarih okunuyor!");
    tarihleri_al(stdin);
        
    return 0;
}
__________________
n'aber, n'apıosun ?
Alıntı ile Cevapla