10. Satrlar va matnlar¶
Oldingi bo‘limda char massivlari bilan tanishdik.
Masalan:
char harflar[3] = {'A', 'B', 'C'};
C tilida matnlar bilan ishlashda ham char massivlaridan foydalanamiz.
Masalan:
"Salom"
Bu matn bir nechta belgidan tashkil topgan:
S
a
l
o
m
Satr nima?¶
C tilida belgilar ketma-ketligi satr deb ataladi.
Masalan:
"Salom"
"Assalomu alaykum"
"C tilini o‘rganamiz"
Satrlar char turidagi massivlarda saqlanadi.
Masalan:
char ism[] = "Ali";
Bu yerda ism nomli satr yaratildi.
Satrni chiqarish¶
Satrni printf() yordamida chiqarish mumkin.
Buning uchun %s ishlatiladi.
#include <stdio.h>
int main() {
char ism[] = "Ali";
printf("%s", ism);
return 0;
}
Natija:
Ali
Bu yerda:
%s
satr chiqarish uchun ishlatiladi.
Satr yaratish¶
Satr yaratishning eng oson usuli:
char ism[] = "Ali";
Masalan:
char shahar[] = "Toshkent";
char til[] = "C";
char salom[] = "Salom";
Bularning barchasi satr hisoblanadi.
Satr va char farqi¶
Bitta belgi:
char harf = 'A';
Satr:
char ism[] = "Ali";
E'tibor bering:
Bitta belgi single quote bilan yoziladi:
'A'
Satr esa double quote bilan yoziladi:
"Ali"
Bu ikkalasini adashtirmang.
Satrning oxiridagi \0¶
C tilida satrning oxirini ko‘rsatish uchun maxsus belgi ishlatiladi:
\0
Masalan:
"Ali"
xotirada taxminan:
A
l
i
\0
ko‘rinishida saqlanadi.
\0 satrning tugaganini bildiradi.
Hozircha bu belgining ichki ishlashini chuqur o‘rganish shart emas.
Faqat C tilidagi satrlarning oxirida maxsus \0 belgisi bo‘lishini bilib qo‘ying.
Satrning uzunligi¶
Satrning nechta belgi borligini aniqlash uchun strlen() funksiyasidan foydalanish mumkin.
Buning uchun:
#include <string.h>
kutubxonasini qo‘shamiz.
Masalan:
#include <stdio.h>
#include <string.h>
int main() {
char ism[] = "Ali";
printf("%zu", strlen(ism));
return 0;
}
Natija:
3
Chunki:
A
l
i
uchta belgi bor.
strlen() nima qiladi?¶
strlen() satrning uzunligini hisoblaydi.
Masalan:
strlen("Salom")
natija:
5
bo‘ladi.
Chunki Salom so‘zida 5 ta belgi bor.
Satrlarni birlashtirish¶
Ikki satrni birlashtirish uchun strcat() funksiyasidan foydalanish mumkin.
Masalan:
#include <stdio.h>
#include <string.h>
int main() {
char ism[20] = "Ali";
char familiya[] = "Valiyev";
strcat(ism, familiya);
printf("%s", ism);
return 0;
}
Natija:
AliValiyev
Agar ular orasida bo‘sh joy kerak bo‘lsa, uni ham qo‘shish mumkin.
Masalan:
char ism[30] = "Ali ";
char familiya[] = "Valiyev";
strcat(ism, familiya);
Natija:
Ali Valiyev
Satrlarni solishtirish¶
Ikki satrni solishtirish uchun strcmp() funksiyasidan foydalanish mumkin.
Masalan:
#include <stdio.h>
#include <string.h>
int main() {
char ism1[] = "Ali";
char ism2[] = "Ali";
if (strcmp(ism1, ism2) == 0) {
printf("Ismlar bir xil.");
}
return 0;
}
Natija:
Ismlar bir xil.
strcmp() ikki satr bir xil bo‘lsa 0 qaytaradi.
Foydalanuvchidan matn olish¶
Endi foydalanuvchi yozgan matnni dasturda olishni o‘rganamiz.
Buning uchun hozircha scanf() dan foydalanamiz.
Masalan:
#include <stdio.h>
int main() {
char ism[20];
printf("Ismingizni kiriting: ");
scanf("%19s", ism);
printf("Salom, %s!", ism);
return 0;
}
Agar foydalanuvchi:
Ali
deb yozsa, natija:
Salom, Ali!
bo‘ladi.
scanf() va %s¶
Satr olishda:
%s
ishlatiladi.
Masalan:
scanf("%19s", ism);
Bu foydalanuvchi kiritgan so‘zni ism massiviga saqlaydi.
Bu yerda 19 soni massiv hajmi bilan bog‘liq bo‘lib, xotiraga ortiqcha ma'lumot yozilishining oldini olishga yordam beradi.
Bo‘sh joyli matn¶
scanf("%s", ...) odatda bo‘sh joygacha bo‘lgan so‘zni o‘qiydi.
Masalan, foydalanuvchi:
Ali Valiyev
deb yozsa, scanf() faqat:
Ali
qismini olishi mumkin.
To‘liq qatorni olish uchun keyinchalik fgets() funksiyasidan foydalanishni o‘rganamiz.
Hozircha oddiy so‘zlar bilan ishlash kifoya.
Satrni for bilan ko‘rish¶
Satr aslida char massiv bo‘lgani uchun uning belgilarini sikl yordamida ko‘rish mumkin.
Masalan:
#include <stdio.h>
int main() {
char ism[] = "Ali";
for (int i = 0; ism[i] != '\0'; i++) {
printf("%c\n", ism[i]);
}
return 0;
}
Natija:
A
l
i
Bu yerda sikl satrning har bir belgisini bittadan chiqaradi.
Satrni o‘zgartirish¶
Satrning alohida belgisini o‘zgartirish mumkin.
Masalan:
char ism[] = "Ali";
ism[0] = 'V';
Endi:
Vli
bo‘ladi.
Chunki birinchi belgi A o‘rniga V bo‘ldi.
Oddiy amaliy misol¶
Keling, foydalanuvchidan ism olamiz.
#include <stdio.h>
int main() {
char ism[20];
printf("Ismingizni kiriting: ");
scanf("%19s", ism);
printf("Salom, %s!", ism);
return 0;
}
Masalan, foydalanuvchi:
Husan
deb kiritsa:
Salom, Husan!
natijasi chiqadi.
Muhim satr funksiyalari¶
C tilida satrlar bilan ishlash uchun ko‘plab tayyor funksiyalar mavjud.
Hozircha quyidagi funksiyalarni bilish kifoya:
| Funksiya | Vazifasi |
|---|---|
strlen() |
Satr uzunligini topadi |
strcat() |
Satrlarni birlashtiradi |
strcmp() |
Satrlarni solishtiradi |
Bu funksiyalar uchun:
#include <string.h>
kutubxonasidan foydalanamiz.
Amaliy mashqlar¶
1-mashq¶
O‘zingizning ismingizni satrda saqlang va ekranga chiqaring.
Masalan:
char ism[] = "Ali";
2-mashq¶
Quyidagi satrning uzunligini toping:
char matn[] = "Salom";
Natija:
5
bo‘lishi kerak.
3-mashq¶
Foydalanuvchidan ism so‘raydigan dastur yozing.
Masalan:
Ismingizni kiriting: Ali
Natija:
Salom, Ali!
bo‘lsin.
4-mashq¶
Quyidagi kod nima chiqaradi?
char ism[] = "Ali";
printf("%c", ism[1]);
Avval javobni o‘ylab ko‘ring.
5-mashq¶
Quyidagi ikkita satrni strcmp() yordamida solishtiring:
char ism1[] = "Ali";
char ism2[] = "Ali";
Agar ular bir xil bo‘lsa:
Ismlar bir xil.
degan xabar chiqaring.
Muhim narsalarni eslab qoling¶
C tilida satr yaratish:
char ism[] = "Ali";
Satrni chiqarish:
printf("%s", ism);
Bitta belgi:
char harf = 'A';
Satr:
char ism[] = "Ali";
Satr uzunligini topish:
strlen(ism)
Satrlarni solishtirish:
strcmp(ism1, ism2)
Satrlarni birlashtirish:
strcat(ism1, ism2)
Satr funksiyalaridan foydalanish uchun:
#include <string.h>
Xulosa¶
C tilida matnlar char massivlari yordamida saqlanadi.
Masalan:
char ism[] = "Ali";
Satrlar bilan ishlash dasturlashda juda muhim.