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
bu satırda const char *ctrl 'nin görevi nedir ?
bu satırda neden 3'e eşitledi ?
Programın tam hali :
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;
}