İyinet'e Hoşgeldiniz!

Türkiye'nin En Eski Webmaster Forum'una Hemen Kayıt Olun!

Kayıt Ol!

C'de dosya okuma ve metin ayıklama işlemi

SLiM_BoY

0
İyinet Üyesi
Katılım
4 Ağustos 2005
Mesajlar
2,325
Reaction score
0
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;
}
 

ejder

0
İyinet Üyesi
Katılım
10 Kasım 2003
Mesajlar
0
Reaction score
4
Konum
istanbul
Kod:
const char *ctrl = "%2u %*1[./-] %2u %*1[./-] %u %*[^ 0123456789]";

burada ctrl isminde bir değişken tanımlanıyor, const char bu değişkenin cinsi, * pointer olduğunu gösteriyor.. C'de stringler char *degisken seklinde tanımlanır.. const'da bu değişkenin değiştirilemeyeceğini tanımlıyor

Kod:
return fscanf(fptr, ctrl, gun, ay, yil) == 3
burada da aslında
Kod:
int code;
code = fscanf(fptr, ctrl, gun, ay, yil);
if(code == 3)
return 1;
else
return 0;
kodunu kısa bir şekilde kullanmış..
 

Türkiye’nin ilk webmaster forum sitesi iyinet.com'da forum üyeleri tarafından yapılan tüm paylaşımlardan; Türk Ceza Kanunu’nun 20. Maddesinin, 5651 Sayılı Kanununun 4. maddesinin 2. fıkrasına göre, paylaşım yapan üyeler sorumludur.

Backlink ve Tanıtım Yazısı için iletişime geçmek için Skype Adresimiz: .cid.1580508955483fe5

Üst