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.