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;
}