Professional Documents
Culture Documents
Leksioni7 (II) Stringat
Leksioni7 (II) Stringat
Dallojne nga:
1. Menyra e deklarimit:
const char a[10]; per konstatet
char b[10]; per variablat
2. Stringa e shprehur si konstante nuk mund t’i
ndryshohet vlera, ndersa asaj variabel po.
Psh:
b[3] = ‘z’ eshte veprim i lejuar; por
a[3] = ‘z’ nxjerr mesazh gabimi.
Sekuence karakteresh midis thonjëzave dyshe.
Shembull: kur thërrasim funksionin
printf(“%s”,“Përshëndetje!”)
Gjuha C i trajton konstantet string si vektor
karakteresh.
Çdo karakter i një stringu zë një byte në memorie.
Nëse konstantja string ka n karaktere, rezervohen në
memorjen+1byte për arsye te karakterit null.
Ky karakter është krejtësisht i ndryshëm nga
karakteri ‘0’
◦ Karakteri „0‟ ka kodin ASCII 48
◦ Karakteri „\0‟ ka kodin ASCII 0.
Një stringë që nuk mbaron me këtë karakter nuk
është një stringë në kuptimin e plotë të fjalës, por
vetëm një bashkësi karakteresh.
/* string.c */
/*lexon në string nga tastiera dhe e afishon atë */
#include <stdio.h> /*përfshin funk.
printf(),scanf()*/
void main(void)
{
char emri[15]; /*vektori ku ruhet emri */
printf(“\nShkruani emrin tuaj: “);
scanf(“%s”, emri);
printf(“Përshëndetje, %s.”, emri);
}
7
Nje stringe qe mban nje karakter te vetem nuk
eshte e njejte me nje karakter.
Karakteri kufizohet me simbolet apostrofa,
stringa me thonjezat.
Stringa me nje karakter ndiqet nga karakteri null,
karakteri eshte njesi e vetme.
Psh. stringa “a” perfaqeson nje pointer ne nje
zone te kujteses ku eshte ruajtur karakteri a dhe
karakteri null. Per ta afishuar a-ne:
printf (‘a’); //GABIM, mund te printosh stringen
printf(“a”) por jo karakterin a ne kete forme.
Karakteri ka nje vlere te njevlershme numerike
int (kodi ASCII i tij), kurse stringa nuk ka numer
int te njevlershem).
8
Para se të përdoren, stringave u duhet rezervuar
vendi në kujtesë për ruajtjen e tyre.
Për to rezervohen aq byte në memorie sa është
dhe numri i karaktereve që i përbëjnë.
Në programin string.c vektori emri është
deklaruar me 15 karaktere, mos të harrojmë se
karakteri i fundit do të jetë ‘\0’.
Kur funksioni scanf() lexon emrin nga tastiera, i
shton në fund karakterin ‘\0’ para se të bëhet
ruajtja në memorie, kështu që nëse vektori
përbëhet nga 15 karaktere në të mund të ruani
një stringë që ka jo më shumë se 14 karaktere.
Shembull:
char date1 [8] = “June 14”;
Karakteri i fundit: karakteri null
10
2 funksione kryesore: scanf() dhe gets().
25
Disa funksione te librarise <string.h>
◦ strcpy(string1, string2);
◦ count2 = strlen(str2);
◦ strcat(str1, str2); ose strncat(str1, str2, 5);
◦ strcmp(str1, str2);
◦ strchr(str, c);
◦ strstr(text, word);
◦ strlen(str1);
islower() Lowercase letter
isupper() Uppercase letter
isalpha() Uppercase or lowercase letter
isalnum() Uppercase or lowercase letter or a digit
iscntrl() Control character
isprint() Any printing character including space
isgraph() Any printing character except space
isdigit() Decimal digit ('0' to '9')
isxdigit() Hexadecimal digit ('0' to '9', 'A' to 'F', 'a' to 'f')
isblank() Standard blank characters (space, '\t')
isspace() whitespace character (space, '\n', '\t', '\v', '\r',
'\f')
ispunct() Printing character for ëhich isspace() and
isalnum() return false
Meqë stringjet të vetme janë vektorë, një
vektor stringjesh nuk është gjë tjetër veçse
një matricë dypërmasore.
Le të ilustrojmë përdorimin e një matrice të
tillë me ndihmën e programit krahaso.c i cili
kërkon nëse stringu i dhënë nga
përdoruesi ndodhet në një vektor të dhënë
stringjesh.
/* krahaso.c */
/* krahason stringun e dhënë me stringjet e një vektori */
#include <stdio.h> /* përfshin funk. printf(), gets() */
#include <stdio.h> /*përfshin funksionin strcmp() */
#define MAX 5 /*numri maksimal i stringjeve */
#define GJATESIA 40 /* gjatesia maksimale e stringut */
void main (void)
{
int ind; /* indeksi i ciklit */
int ugjet=0; /* ka vlerë 1 nëse stringu gjendet */
char emri [40];
char lista[MAX][GJATESIA] =
{ “Adriana”,
“Teuta”,
“Meritoni”,
“Françeska”,
“Dorina” };
printf(“\nSkruani emrin tuaj: );
gets(emri);
for (ind=0; ind<MAX; ind++)
if (strcmp(&lista[ ind ] [ 0 ],emri)==0)
{
ugjet = 1;
break;
}
if (ugjet == 1)
printf(“Ok, ju jeni në listë.”);
else
printf(“Kujdes! Ky person nuk ekziston!.”);
}
Në varësi të faktit nëse emri i dhënë nga
përdoruesi ndodhet apo jo në listë do të kemi
dy variante të ekzekutimit të programit:
s o r t \0
s o t \0 \0
&str[2]
strcpy(&str[2], &str[3])
Prototipi:
char*strcpy (char str1,const char str2);
Kopjon stringën str2 tek stringa str1
Kthen pointer tek stringa destinacion
Shembull:
◦ strcpy(str2,“abcd”);
Shembull:
◦ strcpy(str1,str2);//str1tani mban“abcd”
◦ strcpy(str1,strcpy(str2,“abcd”));
◦ /*E SAKTE! Str1dhe str2 mbajnë“abcd”*/
Në gjuhën C nuk mund të veprohët si në shumë gjuhë të tjera, ku për t’i
dhënë një variabli vlerën e një stringu, përdoret vlerëdhënia e
zakonshme:
◦ str=“Skënderbeu”;
Pra, për një veprim kaq të thjeshtë në gjuhën C duhet të përdoret
funksioni strcpy().
Ky funksion përmban dy argumanta: stringu që do të kopjohet është
argumenti i dytë, ndërsa stringu ku do të bëhet kopjimi është argumenti
i parë.
Prototipi: int strlen(const char *s);
Kthen numrin e karaktereve te stringes (pa
karakterin null)
Shembull:
◦ Int j;
◦ j = strlen(“abc”); // j ka vleren 3
◦ j = strlen(“”); // j ka vleren 0
◦ strcpy(str1, “abc”);
◦ j = strlen(str1); // j ka vleren 3
Prototipi:
char *strcat(char *str1, const char *str2);
Përmbajtjen ë stringës str2 e shton në fund të
stringes str1 (bashkon 2 stringa).
Shembull:
◦ strcpy(str1, “abc”);
◦ strcat(str1, “def”); // str1 permban“abcdef”
◦ strcpy(str1, “abc”);
◦ strcpy(str2, “def”);
◦ strcat(str1, str2); // str1 permban“abcdef”
◦ strcpy(str1, “abc”);
◦ strcpy(str2, “def”);
◦ strcat(str1, strcat(str2, “ghi”));
◦ /* str1 permban“abcdefghi”; str2 permban“defghi” */
Shembull: Të ndërtohet një program që lexon
një stringë nga përdoruesi dhe afishon në
ekran numrin e herëve që përsëritet gërma a
në këtë stringë.
#include <stdio.h>
int main(void) {
char s[31];
int i, nr = 0;
printf(“Jepni nje stringe: ");
gets(s);
for (i= 0; i<strlen(s); i++)
if (s[i] == „a‟)
nr++;
printf(“Ne stringen %s germa a perseritet %d here.”, s, nr);
return 0;
}
Ekzekutimi:
Jepni nje stringe : abc abc cab
Ne stringen abc abc cab germa a perseritej3 here.
char s1[ 50 ] = "jack", s2[ 50 ] = "abc", s3[ 50 ], *sptr;
44
char s1[ 50 ] = "jack", s2[ 50 ] = “abc", s3[ 50 ],*sptr;
45
lexo_rresht: funksion i ndertuar per te lexuar n
karaktere te dhena nga tastjera dhe per ti ruajtur
ato tek stringa str. Kthen numrin e karaktereve te
lexuara.
int getchar(): lexon nje karakter nga tastjera
(funksion i librarise stdio.h)
while(str[i]!='\0')
{
if(str [i]==' ' || str [i]=='\n' || str [i]=='\t')
{
fjale++;
}
i++;
}
printf(“Numri total i fjaleve= %d\n", fjale);
return 0;
}
47
FUND LEKSIONI 7