Агар клавиатурадан символлар сатрини
киритмоқчи бўлсак ва бу сатрни массив мисоли
сифатида олсак, scanf ни қуйидагича ёзамиз:
сhar name[30];
scanf(“%s”,name);
бу ерда name символлар массиви бўлгани учун
унинг қиймати массив адресидир. Шунинг учун
scanf функциясида name олдида & белгиси
қўйилмайди. Бу ерда символлар кетма-кетлигини
киритаётганда улар орасида “ ” (бўш жой)
белгиси бўлмаслиги керак. Агар киритилаётган
символлар кетма-кетлигида бўш жой қўйилса,
name ўзгарувчисига шу бўш жойгача бўлган
символлар қабул қилинади, холос.
gets функцияси
scanf функциясида %s формат ишлатилганда ўзга-
рувчига қиймат киритилаѐтганда белгилар бир-бири-
дан ажратилмаган ҳолда киритилиши шарт. Бундай
ноаниқликни бартараф этишда қуйидаги функциядан
фойдалнилади:
gets(name);
бу функция қўлланилганда, клавиатурадан Enter
босилгунча киритилаѐтган барча белги ва символлар
name га ўзлаштирилади ва сатр охирига (\0) нолли
символ белгиси ўзлаштириб олинади. Масалан,
қиймат киритиш сатрида
Каримов Собир Азизович
деб ѐзиб Enter тугмаси босилгандан сўнг gets(name)
функцияси орқали name ўзгарувчисига «Каримов
Собир Азизович» қиймати ўзлаштирилади.
getch функцияси
Дастурлаш жараѐнида баъзан экрандан битта
символни киритиш талаб этилади, яьни у char
типидаги функция бўлиб ҳисобланади. Масалан
char m;
m=getch();
деб ѐзилган бўлса, экрандан символ киритиш
кутиб турилади ва ихтиѐрий белги клавиатурадан
босилиши билан m га ўзлаштирилиб дастур
бажарилиши давом эттирилади. Шунинг учун ҳам
дастурчилар дастурда кутиш ҳолларини ҳосил
қилиш учун getch функциясига кўп мурожаат
қиладилар.
Маълумотларни босмага чиқариш
Си да маьлумотларни босмага чиқарувчи асосий
функция бўлиб printf ҳисобланади. Унинг умумий
кўриниши қуйидагича:
printf(<формат сатри>,<обьект>,<обьект>…);
бу ерда <формат сатри> - “ – белгиси билан
бошланиб, шу белги билан тугаланувчи обьектларни
босмада кўринишини аниқлаштирувчи андоза.
Объектлар босмага чиқарилишдан олдин формат
сатридаги андозага эга бўлишади. Объект –
ўзгарувчи, ўзгармас, ифода, функция номи бўлиши
мумкин.
<формат сатри>даги қуйидаги кўринишда бўлади:
% [flags] [width] [. precision] [F/ N / h / 1 / L.]
бу ерда [flags] – босмага чиқаришда тасвирланадиган
белгини текислаш учун хизмат қилади ва
қуйидагилардан бири бўлиши мумкин
-
чап томон майдони бўйича текислаб босмага
чиқариш
+ -
ҳар доим рақамли белгини босмага чиқариш
# -
ўнли сонларни босма чиқаришга таъсир кўрсат-
майди, бироқ саккизлик саноқ системасидаги сон
олдига нол, ўн олтилик саноқ системасидаги сон
олдига Ox ѐки OX белги босмага чиқарилади.
Масалан, агар дастур қисми
int a=5.267;
printf(“%f”,a);
каби бўлса, экранда 5.267000 сони чиқади.
Шунингдек майдон узунлигини % билан формат
белгиси ўртасида беришимиз ҳам мумкин. Масалан
int a=5.267;
printf(“%4.2f”,a);
каби бўлса экранда 5.27 сони чикади, чунки биз чоп
этиладиган катталик учун 4 та жой ундан иккитасини
вергулдан кейинга ажратдик. Мисолдан кўринадики,
агар вергулдан кейинга кам жой ажратилган бўлса,
соннинг каср қисми яхлитланади. Агар чоп этилади-
ган сон форматда келтирилган шаблондан катта
бўлса, шаблон инобатга олинмайди ва сон
хотирадагидек чоп этилади. Масалан,
int a=225.567;
printf(“%4.2”,a);
каби дастур қисми ишласа, экранда 225.567
чиқарилади.
Чиқариш функциясида изоҳлар ҳам ѐзиш мумкин.
Изоҳлар формат сатрида тўғридан-тўғри ѐзилади.
Масалан,
printf(“sum= %f”,s);
натижада экранга sum= сўзи ва s ўзгарувчининг
қиймати чиқарилади.
printf(“ Салом тоглар \n”);
буйруғи билан экранда «Салом тоглар» сўзи
чиқарилиб, курсор кейинги сатрга ўтказилади.
Агар биз босмага «%» белгисининг ўзини чиқармоқчи
бўлсак, printf(“%%”); каби ѐзишимиз керак бўлади.
Агар босмага «\» белгисини чиқаришимиз керак
бўлса, printf(“\\”); каби ѐзишимиз керак.
Умуман, чиқаришда «\» белгиси ва ундан кейинги
символ биргаликда бошқарувчи бўлиб ҳисобланади.
Масалан, printf(“\n”); буйруғи билан курсор кейинги
сатр бошига ўтказилади.
Энг кўп ишлатиладиган бошқарувчи белгилар
қуйидагилардир:
\f
– экранни тозалаш; \t – курсорни табуляциялаш;
\b
– курсорни бир позиция орқага ўтказиш;
\n
– курсорни янги сатр бошига ўтказиш;
Агар бир формат бир нечта босмага чиқариш
функцияларида ишлатилса, уни шу функциялардан
олдин бирор ўзгарувчига ўзлаштириш мумкин.
Масалан: #include
main()
{ int a, b, sum; char *format;
format = "a = %d b = %d sum = %d \n";
a = b = 5;
sum = a + b; printf(format,a,b,sum);
sum = a++ + b; printf(format,a,b,sum);
sum = ++a + b; printf(format,a,b,sum); }
puts ва putchar чиқариш функцияси
Do'stlaringiz bilan baham: |