C Chiqarish operatori

Formatli chiqarish – printf. Chiqarish printf funksiyasi ko’rsatilgan parametrlarni standart oqimga chiqarish uchun ishlatiladi. Standart oqim tushunchasi keyingi boblarda yoritiladi. Hozircha standart oqim sifatida monitor tushunilishi yetarlidir.

Funksiya stdio.h modulida joylashgan bo’lib, umumiy ko’rinishi quyidagichadir:

	printf(control,arg1,arg2,…)

Bunda control boshqaruvchi qator deb atalib, ikki turdagi simvollardan iborat bo’ladi: oddiy chiqariluvchi simvollar va navbatdagi parametrni o’zgartirib chiqaruvchi spesifikasiyalar.

Har bir spesifikasiya % simvolidan boshlanib o’zgartirish turini ko’rsatuvchi simvol bilan tugaydi.

O’zgartirish simvollari quyidagilardan iborat.

Butun sonlar uchun:

  • d – parametr ishorali o’nlik butun songa aylantiriladi.
  • u - parametr ishorasiz o’nlik butun songa aylantiriladi.
  • o – parametr ishorasiz va birinchi raqami 0 bo’lmagan sakkizlik songa aylantiriladi.
  • x – parametr ishorasiz va 0x belgisiz o’n oltilik songa aylantiriladi.
  • X – parametr xuddi x kabi. Faqat harf bilan ko’rsatiluvchi raqamlar katta harf ya’ni A,B,C,D,E,F sifatida yoziladi.

Haqiqiy sonlar uchun:

  • e – parametr float yoki double turidagi son deb qaraladi va ishorali m.nnnnnne+-xx ko’rinishidagi o’nlik songa keltiriladi.
  • E – parametr xuddi e kabi. Faqat mantissa belgisi katta harf ya’ni E sifatida yoziladi.
  • f - parametr float yoki double turidagi son deb qaraladi va ishorali m.nnnnnn ko’rinishidagi o’nlik songa keltiriladi.
  • g – parametr berilgan son qiymati va aniqligi uchun eng ixcham %e yoki %f tanlaydi.
  • G – parametr xuddi g kabi. Faqat mantissa belgisi katta harf ya’ni E sifatida yoziladi.

Simvol va satr uchun:

  • c – parametr bitta simvol deb qaraladi.
  • s – parametr satr simvollar nolinchi simvol uchramaguncha yoki ko’rsatilgan sondagi simvollar bosiladi.

Misol:

	#include<stdio.h>
	int main()
	{
	int num = -27; 
	int number = 27; 
	float f = 123.456;
	char r = 'a'; 
	char str[4] = "abc";
	printf("%d\n", num); /* -27 */
	printf("%u\n", number); /* 27 */
	printf("%o\n", number); /* 33 */
	printf("%x\n", number); /* lb */
	printf("%f\n", f); /* 123.456001 */
	printf("%e\n", f); /* 1.23456e+02 */
	printf("%E\n", f); /* 1.23456E+02 */
	printf("%c\n", r); /* a */
	printf("%s\n", str); /* abc */
	return 0;
	}

Prosent % belgisi va o’zgartirish simvoli orasiga quyidagi simvollarni qo’yish mumkin.

Chiqarilayotgan argument chapga tekislash lozimligini ko’rsatuvchi minus belgisi.

Maydon minimal uzunligini ko’rsatuvchi raqamlar qatori.

Maydon uzunligini keyingi raqamlar qatoridan ajratuvchi nuqta.

Biror qatordan qancha simvol ajratib olish lozimligini hamda float yoki double turidagi sonlarda nuqtadan keyin qancha kasr raqamlari bosib chiqarilishini ko’rsatuvchi raqamlar ketma-ketligi.

Chiqarilayotgan son long turiga tegishli ekanligini ko’rsatuvchi uzun o’nlik markeri l.

% dan keyingi simvol o’zgartirish simvoli bo’lmasa u bosmaga chiqariladi.

% simvolini o’zini bosmaga chiqarish uchun %% belgisini berish lozim.

Quyidagi jadval har xil spesifikasiyalarni "HELLO, WORLD" (12 simvolli) so’zini bosishga ta’sirini ko’rsatadi. Bu yerda har bir maydon uzunligini ko’rsatish uchun maydon oxiriga ikki nuqta qo’yilgan.

  • :%10S: :HELLO, WORLD:
  • :%10-S: :HELLO, WORLD:
  • :%20S: : HELLO, WORLD:
  • :%-20S: :HELLO, WORLD :
  • :%20.10S: : HELLO, WOR:
  • :%-20.10S: :HELLO, WOR :
  • :%.10S: :HELLO, WOR:

Turlar maksimal va minimal qiymatlari. Turli turlar maksimal va minimal qiymatlari <LIMITS.H> faylidagi konstantalarda saqlanadi.

Quyidagi dasturda char turidagi bitlar soni va char turi maksimal va minimal qiymati ekranga chiqariladi.

	#include<stdio.h>
	#include<limits.h>
	int main()
	{
	printf("CHAR_BIT = %d\n",CHAR_BIT);
	printf("CHAR_MIN = %d CHAR_MAX = %d\n",CHAR_MIN,CHAR_MAX);
	return 0;
	}


Quyidagi dasturda short, int, long turlari maksimal va minimal qiymati ekranga chiqariladi.

	#include<stdio.h>
	#include<limits.h>
	int main()
	{
	printf("SHRT_MIN = %d SHRT_MAX = %d\n",SHRT_MIN,SHRT_MAX);
	printf("INT_MIN = %d INT_MAX = %d\n",INT_MIN,INT_MAX);
	printf("LONG_MIN = %ld LONG_MAX = %ld\n",LONG_MIN,LONG_MAX);
	return 0;
	}

Quyidagi dasturda unsigned char, unsigned short, unsigned int, unsigned long turlari maksimal va minimal qiymati ekranga chiqariladi.

	#include<stdio.h>
	#include<limits.h>
	int main()
	{
	printf("UCHAR_MAX = %u\n",UCHAR_MAX);
	printf("USHRT_MAX = %u\n",USHRT_MAX);
	printf("UINT_MAX = %u\n",INT_MAX);
	printf("ULONG_MAX = %ul\n",ULONG_MAX);
	return 0;
	}

Formatli kiritish Scanf. Scanf funksiyasi stdio.h modulida joylashgan bo’lib, umumiy ko’rinishi quyidagichadir:

	Scanf(control, arg1, arg2,…)

Funksiya standart oqimdan simvollarni o’qib boshqaruvchi qator asosida formatlab mos parametrlarga yozib qo’yadi. Parametr ko’rsatkich bo’lishi lozim.

Boshqaruvchi qator quyidagi o’zgartirish spesifikasiyalaridan iborat:

  • Bo’shliq, tabulyasiya, keyingi qatorga o’tish simvollari;
  • Oddiy simvollar (% dan tashqari) kiritish oqimidagi navbatdagi simvollar bilan mos kelishi lozim;
  • % simvolidan boshlanuvchi spesifikasiya simvollari;
  • % simvolidan boshlanuvchi qiymat berishni ta’qiqlovchi * simvoli;
  • % simvolidan boshlanuvchi maydon maksimal uzunligini ko’rsatuvchi son;

Quyidagi spesifikasiya simvollarini ishlatish mumkin:

  • d – ishorali o’nli butun son kutilmoqda.
  • o – ishorali sakkizlik butun son kutilmoqda.
  • x –ishorali o’n oltilik butun son kutilmoqda.
  • h - ishorasiz o’nlik son kutilmoqda.
  • c – bitta simvol kutilmoqda.
  • s – satr kutilmoqda.
  • f - float turidagi son kutilmoqda. Kiritilayotgan sonning butun raqamlari va nuqtadan so’ng kasr raqamlari soni va E yoki e belgisidan so’ng mantissa raqamlari soni ko’rsatilishi mumkin.
	#include <stdio.h>
	int main(void)
	{
	unsigned width, precision;
	int number = 256;
	double weight = 242.5;
	printf("What field width?\n");
	scanf("%d", &width);
	printf("The number is :%*d:\n", width, number);
	printf("Now enter a width and a precision:\n");
	scanf("%d %d", &width, &precision);
	printf("Weight = %*.*f\n", width, precision, weight);
	printf("Done!\n");
	return 0;
	}

Lokal va global o’zgaruvchilar. C tilida o’zgaruvchi ta’rifi albatta blok boshida joylashishi lozim.

O’zgaruvchi mavjudlik sohasi deb shu o’zgaruvchiga ajratilgan xotira mavjud bo’lgan dastur qismiga aytiladi. O’zgaruvchi ko’rinish sohasi deb o’zgaruvchi qiymatini olish mumkin bo’lgan dastur qismiga aytiladi. Biror blokda ta’riflangan o’zgaruvchi lokal o’zgaruvchi deyiladi. Har qanday blokdan tashqarida ta’riflangan o’zgaruvchi global o’zgaruvchi deyiladi. Lokal o’zgaruvchi mavjudlik va ko’rinish sohasi ta’rifdan to shu ta’rif joylashgan blok oxirigachadir. Tashqi blokdagi o’zgaruvchi nomi shu blokda joylashgan yoki shu blokdagi ichki blokda o’zgaruvchi nomi bilan bir xil bo’lmasligi kerak. Global o’zgaruvchi mavjudlik sohasi ta’rifdan to dastur oxirigachadir. Agar ichki blokdagi o’zgaruvchi nomi global o’zgaruvchi nomi bilan bir xil bo’lsa lokal o’zgaruvchi ko’rinish sohasida global o’zgaruvchi ko’rinmay qoladi.

	#include<stdio.h>
	int i = 5;
	int k = 6;
	int main()
	{
	int i = 9;
	printf("%d\n",i);
	printf("%d\n",k);
	return 0;
	}
9 6