C Satrlar

Satrlar. C da belgili ma’lumotlar uchun char turi qabul qilingan. Belgili axborotni taqdim etishda belgilar, simvolli o’zgaruvchilar va matnli konstantalar qabul qilingan.

Misollar:

const char c = 'c'; 
char a,b;

C dagi satr - bu nul-belgi - \0 (nul-terminator)- bilan tugallanuvchi belgilar massivi. Nul-terminatorning holatiga qarab satrning amaldagi uzunligi aniqlanadi. Bunday massivdagi elementlar soni, satr tasviriga qaraganda, bittaga ko’p. Simvolli massivlar quyidagicha inisializasiya qilinadi:

char capital[] = "UZBEKDEVS"; 

Bu holda avtomatik ravishda massiv elementlari soni aniqlanadi va massiv oxiriga satr ko’chirish '\0' simvoli qo’shiladi. Yuqoridagi inisializasiyani quyidagicha amalga oshirish mumkin:

char capital[] = {'U','Z','B','E','K','D','E','V','S','\0'};

Bu holda so’z oxirida '\0' simvoli aniq ko’rsatilishi shart. Qiymat berish operatori yordamida satrga qiymat berish mumkin emas. Satrni massivga yoki kiritish paytida yoki nomlantirish yordamida joylashtirish mumkin.

#include <stdio.h>
#include <stdlib.h> 
int main()
{
    char s1[10] = "string1"; 
    int k = sizeof(s1); 
    printf("\n%s %d",s1,k); 
    char s2[] = "string2";
    k = sizeof(s2); 
    printf("\n%s %d",s2,k);
    char s3[] = {'s','t','r','i','n','g','3','\0'};
    k = sizeof(s3);
    printf("\n%s %d",s3,k);
    char *s4 = "string4";//satr ko'rsatkichi, uni o'zgartirib bo'lmaydi k = sizeof(s4);
    printf("\n%s %d",s4,k);
     system("pause"); 
    return 0;
}

Natija:

string1 10 
string2 8
string3 8
string4 4

Keyingi misolda kiritilgan so’zdan berilgan harfni olib tashlash dasturi berilgan.

#include <stdio.h> 
int main()
{
      char s[100]; 
      scanf("%s",&s);
       int i, j;
      for ( i = j = 0; s[i] ! = '\0'; i++) 
      if ( s[i] ! = 'c' )
      s[j++] = s[i]; 
      s[j] = '\0'; 
      printf("%s",s);
       return 0;
}

Xar safar 's' dan farqli simvol uchraganda, u j pozisiyaga yoziladi va faqat shundan so’ng j ning qiymati 1 ga oshadi. Bu quyidagi yozuvga ekvivalent:

if ( s[i] ! = c )
s[j] = s[i]; j++;

Funksiyalar va satrlar.

Funksiyalarda satrlar ishlatilganda ularning chegarasini ko’rsatish shart emas. Satrlarning uzunligini hisoblash len funksiyasini quyidagicha ta’riflash mumkin:

int len(char c[])
{ int m = 0;
for(m = 0;c[m]! = ’0’; m++); 
return m;
};

Shu funksiyadan foydalanilgan dasturni keltiramiz:

#include <stdio.h> 
int len(char c[])
{
      int m = 0;
       while(c[m++]); 
      return m-1;
} 

int main() {
      char e[] = "UZBEKDEVS!";
      printf("\n%d", len(e)); 
      return 0;
}

Bu funksiyaning standart varianti strlen deb ataladi va bu funksiyadan foydalanish uchun string.h sarlavha faylidan foydalanish lozim. Satrdan nusxa olish funksiyasi strcpy ni C tilida quyidagicha ta’riflash mumkin:

#include <stdio.h>
void strlen(char s1[], char s2[]) 
{
        int i = 0;
        while(s2[i]! = '\0') 
        s1[i++] = s2[i];
        s1[i] = s2[i];
  }
int main() {
      char s1[] = "aaa"; 
      char s2[] = "ddd";
      strcpy(s1,s2); 
      printf("%s",s1); 
      return 0;
  }

Natija:

ddd

Berilgan satrni teskariga aylantiruvchi funksiya:

reverse(char s[])
{
    int c, i, j;
    for(i = 0, j = strlen(s) - 1;  i < j;  i++, j--) 
    c = s[i];
    s[i] = s[j]; 
    s[j] = c;
 }

Keyingi misolimizda T qatorni S qator oxiriga ulovchi STRCAT(S,T) funksiyasini ko’rib chiqamiz:

strcat(char s[], t[]) 
{
    int i, j; i = j = 0;
    while (s[i] ! = '\0') 
    i++;
    while((s[i++] = t[j++]) ! = '\0') 
}

So’zlar massivini kiritish.

C tilida so’zlar massivlari ikki o’lchovli simvolli massivlar sifatida ta’riflanadi. Misol uchun:

char name[4][5]. 

Bu ta’rif yordamida har biri 5 ta harfdan iborat bo’lgan 4 ta so’zli massiv kiritiladi. So’zlar massivlari quyidagicha inisializasiya qilinishi mumkin:

char Name[3][8] = { "Anvar","Mirkomil","Yusuf"}.

Bu ta’rifda har bir so’z uchun xotiradan 8 bayt joy ajratiladi va har bir so’z oxiriga ' \0' belgisi kuyiladi. So’zlar massivlari inisializasiya qilinganda so’zlar soni ko’rsatilmasligi mumkin. Bu holda so’zlar soni avtomatik aniqlanadi:

char comp[][9] = { "kompyuter","printer","kartridj"}.

Quyidagi dasturda berilgan harf bilan boshlanuvchi so’zlar ro’yxati bosib chiqariladi:

#include <stdio.h>
int main()
{
      char a[10][10];
      char c = 'a';
      int i;
      for (i = 0;i<3;i++) scanf("%s",&a[i]);
      for (i = 0;i<3;i++)
      if (a[i][0] == c) printf("\n%s",a[i]);
      return 0;
}

Quyidagi dasturda fan nomi, talabalar ro’yxati va ularning baholari kiritiladi. Dastur bajarilganda ikki olgan talabalar ro’yxati bosib chiqariladi:

#include <stdio.h>
int main()
{
        char a[10][10];
        char s[10];
        int k[10];
        scanf("%s",&s);
        for (int i = 0;i<3;i++)
        {
              scanf("%s",&a[i]);
            scanf("%d",&k[i]);
        }
        for (int i = 0;i<3;i++)
        if (k[i] == 2) 
        printf("%s\n",a[i]);
        return 0;
}