Stringovi - phy.pmf.unizg.hrtniksic/FI/materijali/OLD/stringovi.pdf · Osnove programiranja – p....
Transcript of Stringovi - phy.pmf.unizg.hrtniksic/FI/materijali/OLD/stringovi.pdf · Osnove programiranja – p....
Stringovi
- string: niz znakova koji završava NULL znakom \0(ascii kod 0)
- svaki string po konvenciji završava NULL znakom → dabi spremili string od n znakova trebamo polje dužinen+1
- sljedeci nacini inicijalizacije stringa su ekvivalentni
’\0’’b’ ’l’ ’a’ ’b’ ’l’ ’a’A
char A[] = "blabla";char A[] = {’b’,’l’,’a’,’b’,’l’,’a’,’\0’};;
- uocite upotrebu dvostrukih navodnika kod inicijalizacijestringa
Osnove programiranja – p. 1/12
Ispisivanje stringova
- string možemo ispisati printf naredbom koristeciidentifikator %s
char A[]="Kratki tecaj C−a";printf("%s\n",A);printf("%4.10s\n",A);printf("%20s\n",A);printf("%−20s\n",A);
Ispis
- inicijaliziramo string A s tekstom "Kratki tecaj C-a"
Osnove programiranja – p. 2/12
Ispisivanje stringova
- string možemo ispisati printf naredbom koristeciidentifikator %s
char A[]="Kratki tecaj C−a";printf("%s\n",A);printf("%4.10s\n",A);printf("%20s\n",A);printf("%−20s\n",A);
Ispis
Kratki tecaj C−a
- ispisujemo string A koristeci identifikator %s
- ispisuje se onoliko znakova, koliko je string dug
Osnove programiranja – p. 2/12
Ispisivanje stringova
- string možemo ispisati printf naredbom koristeciidentifikator %s
char A[]="Kratki tecaj C−a";printf("%s\n",A);printf("%4.10s\n",A);printf("%20s\n",A);printf("%−20s\n",A);
Ispis
Kratki tec
- identifikator %4.10s znaci da ce se ispisati najmanje 4 inajviše 10 znakova
- ako je string kraci od 4 znaka ostatak se nadopunjujebjelinama (space), a ako je duži od 10, višak znakovanece biti prikazan
Osnove programiranja – p. 2/12
Ispisivanje stringova
- string možemo ispisati printf naredbom koristeciidentifikator %s
char A[]="Kratki tecaj C−a";printf("%s\n",A);printf("%4.10s\n",A);printf("%20s\n",A);printf("%−20s\n",A);
Ispis
Kratki tecaj C−a
- identifikator %20s znaci da se ispisuje najmanje 20znakova
- ako je string kraci ostatak se nadopunjuje bjelinama, atekst je pozicioniran desno
Osnove programiranja – p. 2/12
Ispisivanje stringova
- string možemo ispisati printf naredbom koristeciidentifikator %s
char A[]="Kratki tecaj C−a";printf("%s\n",A);printf("%4.10s\n",A);printf("%20s\n",A);printf("%−20s\n",A);
Ispis
Kratki tecaj C−a
- identifikator %-20s znaci da se ispisuje najmanje 20znakova
- ako je string kraci ostatak se nadopunjuje bjelinama, atekst je pozicioniran lijevo
Osnove programiranja – p. 2/12
Primjer:
’J’ ’a’ ’ ’ ’s’ ’a’ ’m’ ’p’’ ’ ’r’ ’a’ ’v’ ’i’ ’ ’ ’s’ ’t’ ’r’ ’i’ ’n’ ’g’ ’\0’
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
Ispis
str
char str[]="Ja sam pravi string";printf("%s\n",str);str[5]=’M’;str[10]=’V’;printf("%s\n",str);str[10]=’\0’;printf("%s\n",str);str[10]=’v’;printf("%s\n",str);
- inicijaliziramo string str
Osnove programiranja – p. 3/12
Primjer:
’J’ ’a’ ’ ’ ’s’ ’a’ ’m’ ’p’’ ’ ’r’ ’a’ ’v’ ’i’ ’ ’ ’s’ ’t’ ’r’ ’i’ ’n’ ’g’ ’\0’
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
Ispis
strprintf("%s\n",str);str[5]=’M’;str[10]=’V’;printf("%s\n",str);str[10]=’\0’;printf("%s\n",str);str[10]=’v’;printf("%s\n",str);
char str[]="Ja sam pravi string";
Ja sam pravi string
- ispisujemo string str
Osnove programiranja – p. 3/12
Primjer:
’J’ ’a’ ’ ’ ’s’ ’a’ ’M’ ’p’’ ’ ’r’ ’a’ ’v’ ’i’ ’ ’ ’s’ ’t’ ’r’ ’i’ ’n’ ’g’ ’\0’
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
Ispis
strprintf("%s\n",str);str[5]=’M’;str[10]=’V’;printf("%s\n",str);str[10]=’\0’;printf("%s\n",str);str[10]=’v’;printf("%s\n",str);
char str[]="Ja sam pravi string";
- znak ’m’ u elementu str[5] zamjenjujemo s ’M’
Osnove programiranja – p. 3/12
Primjer:
’J’ ’a’ ’ ’ ’s’ ’a’ ’M’ ’p’’ ’ ’r’ ’a’ ’V’ ’i’ ’ ’ ’s’ ’t’ ’r’ ’i’ ’n’ ’g’ ’\0’
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
Ispis
strprintf("%s\n",str);str[5]=’M’;str[10]=’V’;printf("%s\n",str);str[10]=’\0’;printf("%s\n",str);str[10]=’v’;printf("%s\n",str);
char str[]="Ja sam pravi string";
- znak ’v’ u elementu str[10] zamjenjujemo s ’V’
Osnove programiranja – p. 3/12
Primjer:
’J’ ’a’ ’ ’ ’s’ ’a’ ’M’ ’p’’ ’ ’r’ ’a’ ’V’ ’i’ ’ ’ ’s’ ’t’ ’r’ ’i’ ’n’ ’g’ ’\0’
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
Ispis
strprintf("%s\n",str);str[5]=’M’;str[10]=’V’;printf("%s\n",str);str[10]=’\0’;printf("%s\n",str);str[10]=’v’;printf("%s\n",str);
char str[]="Ja sam pravi string";
Ja saM praVi string
- ispisujemo string str
Osnove programiranja – p. 3/12
Primjer:
’J’ ’a’ ’ ’ ’s’ ’a’ ’M’ ’p’’ ’ ’r’ ’a’ ’\0’ ’i’ ’ ’ ’s’ ’t’ ’r’ ’i’ ’n’ ’g’ ’\0’
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
Ispis
strprintf("%s\n",str);str[5]=’M’;str[10]=’V’;printf("%s\n",str);str[10]=’\0’;printf("%s\n",str);str[10]=’v’;printf("%s\n",str);
char str[]="Ja sam pravi string";
- znak ’V’ u elementu str[10] zamjenjujemo s oznakom zakraj stringa ’\0’
Osnove programiranja – p. 3/12
Primjer:
’J’ ’a’ ’ ’ ’s’ ’a’ ’M’ ’p’’ ’ ’r’ ’a’ ’\0’ ’i’ ’ ’ ’s’ ’t’ ’r’ ’i’ ’n’ ’g’ ’\0’
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
Ispis
strprintf("%s\n",str);str[5]=’M’;str[10]=’V’;printf("%s\n",str);str[10]=’\0’;printf("%s\n",str);str[10]=’v’;printf("%s\n",str);
char str[]="Ja sam pravi string";
Ja saM pra
- ispisujemo string str
Osnove programiranja – p. 3/12
Primjer:
’J’ ’a’ ’ ’ ’s’ ’a’ ’M’ ’p’’ ’ ’r’ ’a’ ’v’ ’i’ ’ ’ ’s’ ’t’ ’r’ ’i’ ’n’ ’g’ ’\0’
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
Ispis
strprintf("%s\n",str);str[5]=’M’;str[10]=’V’;printf("%s\n",str);str[10]=’\0’;printf("%s\n",str);str[10]=’v’;printf("%s\n",str);
char str[]="Ja sam pravi string";
- znak ’\0’ u elementu str[10] zamjenjujemo s ’v’
Osnove programiranja – p. 3/12
Primjer:
’J’ ’a’ ’ ’ ’s’ ’a’ ’M’ ’p’’ ’ ’r’ ’a’ ’v’ ’i’ ’ ’ ’s’ ’t’ ’r’ ’i’ ’n’ ’g’ ’\0’
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
Ispis
strprintf("%s\n",str);str[5]=’M’;str[10]=’V’;printf("%s\n",str);str[10]=’\0’;printf("%s\n",str);str[10]=’v’;printf("%s\n",str);
char str[]="Ja sam pravi string";
Ja saM pravi string
- ispisujemo string str
Osnove programiranja – p. 3/12
Ucitavanje stringova
- string možemo ispisati scanf naredbom koristeciidentifikator %s
- niz završava prvom bjelinom u ulaznom nizu znakova
- iza posljednjeg ucitanog znaka automatski se dodajeNULL znak ’\0’
char str[];scanf("%s",str);
- svako polje koje je argument funkcije interpretira se kaopointer na prvi element polja pa se ispred varijable str uscanf ne stavlja adresni operator &
Osnove programiranja – p. 4/12
- koristeci znak konverzije %s nije moguce ucitati stringkoji u sebi sadrži bjeline jer one služe za ogranicavanjeulaznog polja
- za ucitavanje stringova koji ukljucuju bjeline koristimouglate zagrade kao znak konverzije
- unutar uglatih zagrada navodimo niz znakova, a ucitavase najveci niz sastavljen od znakova navedenih unutaruglatih zagrada
- Važno! prije identifikatora %[ treba ostaviti razmak kojifunkciji scanf govori da preskoci sve bjeline kojeprethode znakovnom nizu
- nužno ako to nije prva scanf jer ona uvijek ostavljazavršni znak prijelaza u novi red u ulaznom nizu
Osnove programiranja – p. 5/12
Primjer:
char str[128];printf("Unesite string sastavljen od malih slova i razmaka\n");scanf(" %[ abcdefghijklmnopqrstuvwxyz]",str);printf("%s\n",str);printf("Jos jedan...\n");scanf(" %[ abcdefghijklmnopqrstuvwxyz]",str);printf("%s\n",str);
UNOS ISPIS
mali string
- scanf ucitava string sastavljen od malih slova i razmaka
- uocite razmak izmedu dvostrukog navodnika iidentifikatora %[, kao i razmak izmedu identifikatora %[ iznaka a
- korisnik unosi niz mali string
Osnove programiranja – p. 6/12
Primjer:
char str[128];printf("Unesite string sastavljen od malih slova i razmaka\n");scanf(" %[ abcdefghijklmnopqrstuvwxyz]",str);printf("%s\n",str);printf("Jos jedan...\n");scanf(" %[ abcdefghijklmnopqrstuvwxyz]",str);printf("%s\n",str);
UNOS ISPIS
mali string
- program ispisuje cijeli uneseni niz mali string
Osnove programiranja – p. 6/12
Primjer:
char str[128];printf("Unesite string sastavljen od malih slova i razmaka\n");scanf(" %[ abcdefghijklmnopqrstuvwxyz]",str);printf("%s\n",str);printf("Jos jedan...\n");scanf(" %[ abcdefghijklmnopqrstuvwxyz]",str);printf("%s\n",str);
UNOS ISPIS
mali STRING
- korisnik unosi niz mali STRING
- funkcija scanf ucitava niz do pojave velikih slova jer onanisu navedena u uglatim zagradama identifikatora
Osnove programiranja – p. 6/12
Primjer:
char str[128];printf("Unesite string sastavljen od malih slova i razmaka\n");scanf(" %[ abcdefghijklmnopqrstuvwxyz]",str);printf("%s\n",str);printf("Jos jedan...\n");scanf(" %[ abcdefghijklmnopqrstuvwxyz]",str);printf("%s\n",str);
UNOS ISPIS
mali
- program ispisuje samo dio niza s malim slovima
Osnove programiranja – p. 6/12
Primjer: usporedivanje dva stringa
char A[]="mama";char B[]="mamA";int i;for(i=0; A[i] !=’\0’ || B[i] != ’\0’;i++){ if( A[i] != B[i]) { printf("A i B su razliciti\n"); break; }}
A[0] A[1] A[2] A[3] A[4]
’m’ ’a’ ’m’ ’a’ ’\0’
B[4]B[0] B[1] B[2] B[3]
’m’ ’a’ ’m’ ’A’ ’\0’
i
0
- uocite uvjet u for petlji: provjerava se da li smo neki odstringova procitali do kraja tj. da li je A[i] ili B[i] jednakNULL znaku
Osnove programiranja – p. 7/12
Primjer: usporedivanje dva stringa
char A[]="mama";char B[]="mamA";int i;for(i=0; A[i] !=’\0’ || B[i] != ’\0’;i++){ if( A[i] != B[i]) { printf("A i B su razliciti\n"); break; }}
A[0] A[1] A[2] A[3] A[4]
’m’ ’a’ ’m’ ’a’ ’\0’
B[4]B[0] B[1] B[2] B[3]
’m’ ’a’ ’m’ ’A’ ’\0’
i
0
- uocite uvjet u for petlji: provjerava se da li smo neki odstringova procitali do kraja tj. da li je A[i] ili B[i] jednakNULL znaku
Osnove programiranja – p. 7/12
Primjer: usporedivanje dva stringa
char A[]="mama";char B[]="mamA";int i;for(i=0; A[i] !=’\0’ || B[i] != ’\0’;i++){ if( A[i] != B[i]) { printf("A i B su razliciti\n"); break; }}
A[0] A[1] A[2] A[3] A[4]
’m’ ’a’ ’m’ ’a’ ’\0’
B[4]B[0] B[1] B[2] B[3]
’m’ ’a’ ’m’ ’A’ ’\0’
i
1
- uocite uvjet u for petlji: provjerava se da li smo neki odstringova procitali do kraja tj. da li je A[i] ili B[i] jednakNULL znaku
Osnove programiranja – p. 7/12
Primjer: usporedivanje dva stringa
char A[]="mama";char B[]="mamA";int i;for(i=0; A[i] !=’\0’ || B[i] != ’\0’;i++){ if( A[i] != B[i]) { printf("A i B su razliciti\n"); break; }}
A[0] A[1] A[2] A[3] A[4]
’m’ ’a’ ’m’ ’a’ ’\0’
B[4]B[0] B[1] B[2] B[3]
’m’ ’a’ ’m’ ’A’ ’\0’
i
1
- uocite uvjet u for petlji: provjerava se da li smo neki odstringova procitali do kraja tj. da li je A[i] ili B[i] jednakNULL znaku
Osnove programiranja – p. 7/12
Primjer: usporedivanje dva stringa
char A[]="mama";char B[]="mamA";int i;for(i=0; A[i] !=’\0’ || B[i] != ’\0’;i++){ if( A[i] != B[i]) { printf("A i B su razliciti\n"); break; }}
A[0] A[1] A[2] A[3] A[4]
’m’ ’a’ ’m’ ’a’ ’\0’
B[4]B[0] B[1] B[2] B[3]
’m’ ’a’ ’m’ ’A’ ’\0’
i
2
- uocite uvjet u for petlji: provjerava se da li smo neki odstringova procitali do kraja tj. da li je A[i] ili B[i] jednakNULL znaku
Osnove programiranja – p. 7/12
Primjer: usporedivanje dva stringa
char A[]="mama";char B[]="mamA";int i;for(i=0; A[i] !=’\0’ || B[i] != ’\0’;i++){ if( A[i] != B[i]) { printf("A i B su razliciti\n"); break; }}
A[0] A[1] A[2] A[3] A[4]
’m’ ’a’ ’m’ ’a’ ’\0’
B[4]B[0] B[1] B[2] B[3]
’m’ ’a’ ’m’ ’A’ ’\0’
i
2
- uocite uvjet u for petlji: provjerava se da li smo neki odstringova procitali do kraja tj. da li je A[i] ili B[i] jednakNULL znaku
Osnove programiranja – p. 7/12
Primjer: usporedivanje dva stringa
char A[]="mama";char B[]="mamA";int i;for(i=0; A[i] !=’\0’ || B[i] != ’\0’;i++){ if( A[i] != B[i]) { printf("A i B su razliciti\n"); break; }}
A[0] A[1] A[2] A[3] A[4]
’m’ ’a’ ’m’ ’a’ ’\0’
B[4]B[0] B[1] B[2] B[3]
’m’ ’a’ ’m’ ’A’ ’\0’
i
3
- uocite uvjet u for petlji: provjerava se da li smo neki odstringova procitali do kraja tj. da li je A[i] ili B[i] jednakNULL znaku
Osnove programiranja – p. 7/12
Primjer: usporedivanje dva stringa
char A[]="mama";char B[]="mamA";int i;for(i=0; A[i] !=’\0’ || B[i] != ’\0’;i++){ if( A[i] != B[i]) { printf("A i B su razliciti\n"); break; }}
A[0] A[1] A[2] A[3] A[4]
’m’ ’a’ ’m’ ’a’ ’\0’
B[4]B[0] B[1] B[2] B[3]
’m’ ’a’ ’m’ ’A’ ’\0’
i
3
- uocite uvjet u for petlji: provjerava se da li smo neki odstringova procitali do kraja tj. da li je A[i] ili B[i] jednakNULL znaku
Osnove programiranja – p. 7/12
Primjer: usporedivanje dva stringa
char A[]="mama";char B[]="mamA";int i;for(i=0; A[i] !=’\0’ || B[i] != ’\0’;i++){ if( A[i] != B[i]) { printf("A i B su razliciti\n"); break; }}
A[0] A[1] A[2] A[3] A[4]
’m’ ’a’ ’m’ ’a’ ’\0’
B[4]B[0] B[1] B[2] B[3]
’m’ ’a’ ’m’ ’A’ ’\0’
i
3
- uocite uvjet u for petlji: provjerava se da li smo neki odstringova procitali do kraja tj. da li je A[i] ili B[i] jednakNULL znaku
Osnove programiranja – p. 7/12
Primjer: zamjena znaka ’a’ u stringu s znakom ’A’
’m’ ’a’ ’l’ ’i’ ’\0’
A[0] A[1] A[2] A[3] A[4]
char A[]="mali";int i;for(i=0; A[i] != ’\0’;i++){ if(A[i] == ’a’) A[i] = ’A’;}printf("Izmjenjeni niz: %s\n",A);
i
0
- uvjet u for petlji: provjeravamo da li je niz procitan dokraja tj. da li je A[i] NULL znak
- za svaki clan niza provjerimo da li je jednak ’a’ i ako jestzamijenimo ga s ’A’
Osnove programiranja – p. 8/12
Primjer: zamjena znaka ’a’ u stringu s znakom ’A’
’m’ ’a’ ’l’ ’i’ ’\0’
A[0] A[1] A[2] A[3] A[4]
char A[]="mali";int i;for(i=0; A[i] != ’\0’;i++){ if(A[i] == ’a’) A[i] = ’A’;}printf("Izmjenjeni niz: %s\n",A);
i
0
- uvjet u for petlji: provjeravamo da li je niz procitan dokraja tj. da li je A[i] NULL znak
- za svaki clan niza provjerimo da li je jednak ’a’ i ako jestzamijenimo ga s ’A’
Osnove programiranja – p. 8/12
Primjer: zamjena znaka ’a’ u stringu s znakom ’A’
’m’ ’a’ ’l’ ’i’ ’\0’
A[0] A[1] A[2] A[3] A[4]
char A[]="mali";int i;for(i=0; A[i] != ’\0’;i++){ if(A[i] == ’a’) A[i] = ’A’;}printf("Izmjenjeni niz: %s\n",A);
i
1
- uvjet u for petlji: provjeravamo da li je niz procitan dokraja tj. da li je A[i] NULL znak
- za svaki clan niza provjerimo da li je jednak ’a’ i ako jestzamijenimo ga s ’A’
Osnove programiranja – p. 8/12
Primjer: zamjena znaka ’a’ u stringu s znakom ’A’
’m’ ’A’ ’l’ ’i’ ’\0’
A[0] A[1] A[2] A[3] A[4]
char A[]="mali";int i;for(i=0; A[i] != ’\0’;i++){ if(A[i] == ’a’) A[i] = ’A’;}printf("Izmjenjeni niz: %s\n",A);
i
1
- uvjet u for petlji: provjeravamo da li je niz procitan dokraja tj. da li je A[i] NULL znak
- za svaki clan niza provjerimo da li je jednak ’a’ i ako jestzamijenimo ga s ’A’
Osnove programiranja – p. 8/12
Primjer: zamjena znaka ’a’ u stringu s znakom ’A’
’m’ ’A’ ’l’ ’i’ ’\0’
A[0] A[1] A[2] A[3] A[4]
char A[]="mali";int i;for(i=0; A[i] != ’\0’;i++){ if(A[i] == ’a’) A[i] = ’A’;}printf("Izmjenjeni niz: %s\n",A);
i
2
- uvjet u for petlji: provjeravamo da li je niz procitan dokraja tj. da li je A[i] NULL znak
- za svaki clan niza provjerimo da li je jednak ’a’ i ako jestzamijenimo ga s ’A’
Osnove programiranja – p. 8/12
Primjer: zamjena znaka ’a’ u stringu s znakom ’A’
’m’ ’A’ ’l’ ’i’ ’\0’
A[0] A[1] A[2] A[3] A[4]
char A[]="mali";int i;for(i=0; A[i] != ’\0’;i++){ if(A[i] == ’a’) A[i] = ’A’;}printf("Izmjenjeni niz: %s\n",A);
i
2
- uvjet u for petlji: provjeravamo da li je niz procitan dokraja tj. da li je A[i] NULL znak
- za svaki clan niza provjerimo da li je jednak ’a’ i ako jestzamijenimo ga s ’A’
Osnove programiranja – p. 8/12
Primjer: zamjena znaka ’a’ u stringu s znakom ’A’
’m’ ’A’ ’l’ ’i’ ’\0’
A[0] A[1] A[2] A[3] A[4]
char A[]="mali";int i;for(i=0; A[i] != ’\0’;i++){ if(A[i] == ’a’) A[i] = ’A’;}printf("Izmjenjeni niz: %s\n",A);
i
3
- uvjet u for petlji: provjeravamo da li je niz procitan dokraja tj. da li je A[i] NULL znak
- za svaki clan niza provjerimo da li je jednak ’a’ i ako jestzamijenimo ga s ’A’
Osnove programiranja – p. 8/12
Primjer: zamjena znaka ’a’ u stringu s znakom ’A’
’m’ ’A’ ’l’ ’i’ ’\0’
A[0] A[1] A[2] A[3] A[4]
char A[]="mali";int i;for(i=0; A[i] != ’\0’;i++){ if(A[i] == ’a’) A[i] = ’A’;}printf("Izmjenjeni niz: %s\n",A);
i
3
- uvjet u for petlji: provjeravamo da li je niz procitan dokraja tj. da li je A[i] NULL znak
- za svaki clan niza provjerimo da li je jednak ’a’ i ako jestzamijenimo ga s ’A’
Osnove programiranja – p. 8/12
Primjer: zamjena znaka ’a’ u stringu s znakom ’A’
’m’ ’A’ ’l’ ’i’ ’\0’
A[0] A[1] A[2] A[3] A[4]
char A[]="mali";int i;for(i=0; A[i] != ’\0’;i++){ if(A[i] == ’a’) A[i] = ’A’;}printf("Izmjenjeni niz: %s\n",A);
i
4
- uvjet u for petlji: provjeravamo da li je niz procitan dokraja tj. da li je A[i] NULL znak
- za svaki clan niza provjerimo da li je jednak ’a’ i ako jestzamijenimo ga s ’A’
Osnove programiranja – p. 8/12
Primjer: zamjena znaka ’a’ u stringu s znakom ’A’
’m’ ’A’ ’l’ ’i’ ’\0’
A[0] A[1] A[2] A[3] A[4]
char A[]="mali";int i;for(i=0; A[i] != ’\0’;i++){ if(A[i] == ’a’) A[i] = ’A’;}printf("Izmjenjeni niz: %s\n",A);
i
4
Izmjenjeni niz: mAli
- uvjet u for petlji: provjeravamo da li je niz procitan dokraja tj. da li je A[i] NULL znak
- za svaki clan niza provjerimo da li je jednak ’a’ i ako jestzamijenimo ga s ’A’
Osnove programiranja – p. 8/12
String Library
- string.h je header posebne biblioteke koja sadržikorisne funkcije za manipulaciju stringovima
- ukljucujemo je prije funkcije main predprocesorskomnaredbom #include<string.h>
- funkciju strlen(s) koristimo da bi odredili dužinu stringa s
- funkciju strcmp(s1,s2) koristimo da bi usporedilistringove s1 i s2
- funckiju strcpy(s1,s2) koristimo da bi kopirali string s2 ustring s1
- string library sadrži još mnogo funkcija
Osnove programiranja – p. 9/12
Primjer: funkcija strlen(s)
#include <stdio.h>#include <string.h>
int main(){ char A[]="Primjer stringa"; int duzina = strlen(A); printf("Duzina stringa A: %d\n",duzina); return 0;}
ispis
- prije funkcije main moramo ukljuciti string library
Osnove programiranja – p. 10/12
Primjer: funkcija strlen(s)
#include <stdio.h>#include <string.h>
int main(){ char A[]="Primjer stringa"; int duzina = strlen(A); printf("Duzina stringa A: %d\n",duzina); return 0;}
ispis
- inicijaliziramo string A
Osnove programiranja – p. 10/12
Primjer: funkcija strlen(s)
#include <stdio.h>#include <string.h>
int main(){ char A[]="Primjer stringa"; int duzina = strlen(A); printf("Duzina stringa A: %d\n",duzina); return 0;}
ispis
- funkcija strlen(A) vraca dužinu stringa A
Osnove programiranja – p. 10/12
Primjer: funkcija strlen(s)
#include <stdio.h>#include <string.h>
int main(){ char A[]="Primjer stringa"; int duzina = strlen(A); printf("Duzina stringa A: %d\n",duzina); return 0;}
ispis
Duzina stringa A: 15
- program ispisuje dužinu stringa A
Osnove programiranja – p. 10/12
Primjer: funkcija strcmp
#include <stdio.h>#include <string.h>int main(){ char A[101],B[101]; printf("Unesite prvi niz znakova (max. 100)\n"); scanf("%s",A); printf("Unesite drugi niz znakova (max 100)\n"); scanf("%s",B); int iflag = strcmp(A,B); if(iflag == 0) printf("Nizovi A i B su jednaki\n"); else printf("Nizovi A i B su razliciti\n"); return 0;}
ispis
A
B
- prije funkcije main moramo ukljuciti string library
Osnove programiranja – p. 11/12
Primjer: funkcija strcmp
#include <stdio.h>#include <string.h>int main(){ char A[101],B[101]; printf("Unesite prvi niz znakova (max. 100)\n"); scanf("%s",A); printf("Unesite drugi niz znakova (max 100)\n"); scanf("%s",B); int iflag = strcmp(A,B); if(iflag == 0) printf("Nizovi A i B su jednaki\n"); else printf("Nizovi A i B su razliciti\n"); return 0;}
ispis
A
B
prviNiz
- korisnik upisuje string A
Osnove programiranja – p. 11/12
Primjer: funkcija strcmp
#include <stdio.h>#include <string.h>int main(){ char A[101],B[101]; printf("Unesite prvi niz znakova (max. 100)\n"); scanf("%s",A); printf("Unesite drugi niz znakova (max 100)\n"); scanf("%s",B); int iflag = strcmp(A,B); if(iflag == 0) printf("Nizovi A i B su jednaki\n"); else printf("Nizovi A i B su razliciti\n"); return 0;}
ispis
A
B
prviNiz
drugiNiz
- korisnik upisuje string B
Osnove programiranja – p. 11/12
Primjer: funkcija strcmp
#include <stdio.h>#include <string.h>int main(){ char A[101],B[101]; printf("Unesite prvi niz znakova (max. 100)\n"); scanf("%s",A); printf("Unesite drugi niz znakova (max 100)\n"); scanf("%s",B); int iflag = strcmp(A,B); if(iflag == 0) printf("Nizovi A i B su jednaki\n"); else printf("Nizovi A i B su razliciti\n"); return 0;}
ispis
A
B
prviNiz
drugiNiz
- funkcija strcmp(A,B) vraca vrijednost 0 ako su stringovijednaki
Osnove programiranja – p. 11/12
Primjer: funkcija strcmp
#include <stdio.h>#include <string.h>int main(){ char A[101],B[101]; printf("Unesite prvi niz znakova (max. 100)\n"); scanf("%s",A); printf("Unesite drugi niz znakova (max 100)\n"); scanf("%s",B); int iflag = strcmp(A,B); if(iflag == 0) printf("Nizovi A i B su jednaki\n"); else printf("Nizovi A i B su razliciti\n"); return 0;}
ispis
A
B
prviNiz
drugiNiz
- iflag nije jednak 0 jer su stringovi razliciti
Osnove programiranja – p. 11/12
Primjer: funkcija strcmp
#include <stdio.h>#include <string.h>int main(){ char A[101],B[101]; printf("Unesite prvi niz znakova (max. 100)\n"); scanf("%s",A); printf("Unesite drugi niz znakova (max 100)\n"); scanf("%s",B); int iflag = strcmp(A,B); if(iflag == 0) printf("Nizovi A i B su jednaki\n"); else printf("Nizovi A i B su razliciti\n"); return 0;}
ispis
A
B
prviNiz
drugiNiz
Nizovi A i B su razliciti
- iflag nije jednak 0 jer su stringovi razliciti
Osnove programiranja – p. 11/12
Primjer: funkcija strcpy(s1,s2)
#include <stdio.h>#include <string.h>int main(){ char A[101],B[101]; printf("Unesite niz znakova (max. 100)\n"); scanf("%s",A); strcpy(B,A); printf("Orginalni niz A: %s\n",A); printf("Kopija niza A: %s\n",B); return 0;}
A[0]A[1] A[2]A[3]
B[0] B[1]B[2] B[3]
ispis
- prije funkcije main moramo ukljuciti string library
Osnove programiranja – p. 12/12
Primjer: funkcija strcpy(s1,s2)
#include <stdio.h>#include <string.h>int main(){ char A[101],B[101]; printf("Unesite niz znakova (max. 100)\n"); scanf("%s",A); strcpy(B,A); printf("Orginalni niz A: %s\n",A); printf("Kopija niza A: %s\n",B); return 0;}
A[0]A[1] A[2]A[3]
B[0] B[1]B[2] B[3]
ispis
’n’ ’i’ ’z’ ’\0’
- korisnik upisuje string A
Osnove programiranja – p. 12/12
Primjer: funkcija strcpy(s1,s2)
#include <stdio.h>#include <string.h>int main(){ char A[101],B[101]; printf("Unesite niz znakova (max. 100)\n"); scanf("%s",A); strcpy(B,A); printf("Orginalni niz A: %s\n",A); printf("Kopija niza A: %s\n",B); return 0;}
A[0]A[1] A[2]A[3]
B[0] B[1]B[2] B[3]
ispis
’n’ ’i’ ’z’ ’\0’
’n’ ’i’ ’z’ ’\0’
- funkcija strcpy kopira string A u string B
Osnove programiranja – p. 12/12
Primjer: funkcija strcpy(s1,s2)
#include <stdio.h>#include <string.h>int main(){ char A[101],B[101]; printf("Unesite niz znakova (max. 100)\n"); scanf("%s",A); strcpy(B,A); printf("Orginalni niz A: %s\n",A); printf("Kopija niza A: %s\n",B); return 0;}
A[0]A[1] A[2]A[3]
B[0] B[1]B[2] B[3]
ispis
’n’ ’i’ ’z’ ’\0’
’n’ ’i’ ’z’ ’\0’
Kopija niza A: niz
- program ispisuje kopiju stringa A
Osnove programiranja – p. 12/12