57 - DARS. FAYLGA IHTIYORIY MUROJAAT.
Quyida darajada fayllarni ihtiyoriy tartibda uqish mumkin. Buning uchun
lseek ( ) funktsiyasidan foydalanish lozim. Bu funktsiya prototipi quyidagi ko’rinishga ega:
Long lseek (int fd, long offset, int origin);
Bu funktsiya fd deskriptori bilan bog’lik fayldagi joriy pozitsiyani uchinchi parametr (origen) orqali nuqtaga nisbatan ikkinchi parametr (offset) qadamga ko’taradi. Boshlangich nuqta MS DOS da io.h yoki UNIX da unistd.h sarlavhali fayllarda aniqlangan konstantalar orqali aniqlanadi:
SEEK_SET (0 qiymatga ega) fayl boshi
SEEK_CUR (1 qiymatga ega) joriy pozitsiya
SEEK_END (2 qiymatga ega) fayl ohiri
Ko’chish davomida hato kelib chiqsa hato kodi errno global o’zgaruvchisiga yoziladi. Faylda joriy pozitsiyani aniqlash uchun tell ( ) funktsiyasidan foydalaniladi:
Bu funktsiya prototipi : long tell (int fd) ;
Joriy pozitsiyani fayl boshiga keltirish:
Lseek (fd, oh, seek_set)
Joriy pozitsiyani fayl ohiriga keltirish:
Lseek (fd, oh, seek_end)
58 - DARS. STRUKTURALI TIPLAR VA STRUKTURALAR.
Strukturali tip.
Struktura bu turli tipdagi ma'lumotlarning birlashtirilgan tipdir. Struktura har hil tipdagi elementlar-komponentalardan iborat buladi. Strukturalar qo’yidagicha ta'riflanishi mumkin:
Struct struturali_tip_nomi
{Elementlar_ta'riflari}
Misol uchun ombordagi mollarni tasvirlovchi strukturani quramiz. Bu struktura qo’yidagi komponentalarga ega bo’lishi mumkin:
- Mol nomi (char*)
- Sotib olish narhi (long)
- Ustiga quyilgan narh, foizda (float)
- Mol soni (int)
- Mol kelib tushgan sana (char[9])
Bu struktura dasturda qo’yidagicha ta'riflanadi:
struct goods {
char* name;
long price;
float percent;
int vol;
char date[9];
} year;
Konkret strukturalar va strukturaga ko’rsatkichlar bu tip yordamida qo’yidagicha ta'riflanishi mumkin:
Struct goods food, percon; struct goods *point_to;
Strukturalarni tasvirlashda ihtiyoriy murakkab tip uchun nom berishga imkon beruvchi typedef hizmatchi so’zidan foydalanish mumkin. Bu holda strukturali tip qo’yidagi shaklda ta'riflanadi:
Typedef struct
{Elementlar_ta'riflari}
strukturali_tip_nomi
Misol uchun:
Typedef struct
{ double real;
double imag;
}
complex;
Bu misolda kompleks sonni tasvirlovchi strukturali tip complex kiritilgan bo’lib, kompleks son haqiqiy qismini tasvirlovchi real va mavhum qismini tasvirlovchi komponentalaridan iboratdir. Konkret strukturalar bu holda qo’yidagicha tasvirlanadi:
Complex sigma,alfa;
Strukturali tip typedef yordamida aniqlangan nomdan tashqari, standart usulda aniqlangan nomga ega bo’lishi mumkin. Qo’yidagi misolda kasr sonni tasvirlovchi numerator –sur'at va denominator-mahraj komponentalaridan iborat struktura ta'rifi keltirilgan.
Typedef struct rational_fraction
{ int numerator;
int denominator;
} fraction;
Bu misolda fraction kasrning Typedef orqali kiritilgan nomi, rational_fraction standart usulda kiritilgan nom. Bu holda konkret strukturalar qo’yidagicha tasvirlanishi mumkin:
Struct rational_fraction alfa; fraction beta;
|