55
Stringovi - string: niz znakova koji završava NULL znakom \0 (ascii kod 0) - svaki string po konvenciji završava NULL znakom da bi spremili string od n znakova trebamo polje dužine n+1 - sljede ´ ci na ˇ cini inicijalizacije stringa su ekvivalentni ’\0’ ’b’ ’l’ ’a’ ’b’ ’l’ ’a’ A char A[] = "blabla"; char A[] = {’b’,’l’,’a’,’b’,’l’,’a’,’\0’}; - uo ˇ cite upotrebu dvostrukih navodnika kod inicijalizacije stringa Osnove programiranja – p. 1/12

Stringovi - phy.pmf.unizg.hrtniksic/FI/materijali/OLD/stringovi.pdf · Osnove programiranja – p. 1/12. Ispisivanje stringova - string možemo ispisati printf naredbom koristeci

  • Upload
    buibao

  • View
    220

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Stringovi - phy.pmf.unizg.hrtniksic/FI/materijali/OLD/stringovi.pdf · Osnove programiranja – p. 1/12. Ispisivanje stringova - string možemo ispisati printf naredbom koristeci

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

Page 2: Stringovi - phy.pmf.unizg.hrtniksic/FI/materijali/OLD/stringovi.pdf · Osnove programiranja – p. 1/12. Ispisivanje stringova - string možemo ispisati printf naredbom koristeci

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

Page 3: Stringovi - phy.pmf.unizg.hrtniksic/FI/materijali/OLD/stringovi.pdf · Osnove programiranja – p. 1/12. Ispisivanje stringova - string možemo ispisati printf naredbom koristeci

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

Page 4: Stringovi - phy.pmf.unizg.hrtniksic/FI/materijali/OLD/stringovi.pdf · Osnove programiranja – p. 1/12. Ispisivanje stringova - string možemo ispisati printf naredbom koristeci

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

Page 5: Stringovi - phy.pmf.unizg.hrtniksic/FI/materijali/OLD/stringovi.pdf · Osnove programiranja – p. 1/12. Ispisivanje stringova - string možemo ispisati printf naredbom koristeci

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

Page 6: Stringovi - phy.pmf.unizg.hrtniksic/FI/materijali/OLD/stringovi.pdf · Osnove programiranja – p. 1/12. Ispisivanje stringova - string možemo ispisati printf naredbom koristeci

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

Page 7: Stringovi - phy.pmf.unizg.hrtniksic/FI/materijali/OLD/stringovi.pdf · Osnove programiranja – p. 1/12. Ispisivanje stringova - string možemo ispisati printf naredbom koristeci

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

Page 8: Stringovi - phy.pmf.unizg.hrtniksic/FI/materijali/OLD/stringovi.pdf · Osnove programiranja – p. 1/12. Ispisivanje stringova - string možemo ispisati printf naredbom koristeci

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

Page 9: Stringovi - phy.pmf.unizg.hrtniksic/FI/materijali/OLD/stringovi.pdf · Osnove programiranja – p. 1/12. Ispisivanje stringova - string možemo ispisati printf naredbom koristeci

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

Page 10: Stringovi - phy.pmf.unizg.hrtniksic/FI/materijali/OLD/stringovi.pdf · Osnove programiranja – p. 1/12. Ispisivanje stringova - string možemo ispisati printf naredbom koristeci

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

Page 11: Stringovi - phy.pmf.unizg.hrtniksic/FI/materijali/OLD/stringovi.pdf · Osnove programiranja – p. 1/12. Ispisivanje stringova - string možemo ispisati printf naredbom koristeci

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

Page 12: Stringovi - phy.pmf.unizg.hrtniksic/FI/materijali/OLD/stringovi.pdf · Osnove programiranja – p. 1/12. Ispisivanje stringova - string možemo ispisati printf naredbom koristeci

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

Page 13: Stringovi - phy.pmf.unizg.hrtniksic/FI/materijali/OLD/stringovi.pdf · Osnove programiranja – p. 1/12. Ispisivanje stringova - string možemo ispisati printf naredbom koristeci

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

Page 14: Stringovi - phy.pmf.unizg.hrtniksic/FI/materijali/OLD/stringovi.pdf · Osnove programiranja – p. 1/12. Ispisivanje stringova - string možemo ispisati printf naredbom koristeci

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

Page 15: Stringovi - phy.pmf.unizg.hrtniksic/FI/materijali/OLD/stringovi.pdf · Osnove programiranja – p. 1/12. Ispisivanje stringova - string možemo ispisati printf naredbom koristeci

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

Page 16: Stringovi - phy.pmf.unizg.hrtniksic/FI/materijali/OLD/stringovi.pdf · Osnove programiranja – p. 1/12. Ispisivanje stringova - string možemo ispisati printf naredbom koristeci

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

Page 17: Stringovi - phy.pmf.unizg.hrtniksic/FI/materijali/OLD/stringovi.pdf · Osnove programiranja – p. 1/12. Ispisivanje stringova - string možemo ispisati printf naredbom koristeci

- 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

Page 18: Stringovi - phy.pmf.unizg.hrtniksic/FI/materijali/OLD/stringovi.pdf · Osnove programiranja – p. 1/12. Ispisivanje stringova - string možemo ispisati printf naredbom koristeci

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

Page 19: Stringovi - phy.pmf.unizg.hrtniksic/FI/materijali/OLD/stringovi.pdf · Osnove programiranja – p. 1/12. Ispisivanje stringova - string možemo ispisati printf naredbom koristeci

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

Page 20: Stringovi - phy.pmf.unizg.hrtniksic/FI/materijali/OLD/stringovi.pdf · Osnove programiranja – p. 1/12. Ispisivanje stringova - string možemo ispisati printf naredbom koristeci

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

Page 21: Stringovi - phy.pmf.unizg.hrtniksic/FI/materijali/OLD/stringovi.pdf · Osnove programiranja – p. 1/12. Ispisivanje stringova - string možemo ispisati printf naredbom koristeci

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

Page 22: Stringovi - phy.pmf.unizg.hrtniksic/FI/materijali/OLD/stringovi.pdf · Osnove programiranja – p. 1/12. Ispisivanje stringova - string možemo ispisati printf naredbom koristeci

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

Page 23: Stringovi - phy.pmf.unizg.hrtniksic/FI/materijali/OLD/stringovi.pdf · Osnove programiranja – p. 1/12. Ispisivanje stringova - string možemo ispisati printf naredbom koristeci

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

Page 24: Stringovi - phy.pmf.unizg.hrtniksic/FI/materijali/OLD/stringovi.pdf · Osnove programiranja – p. 1/12. Ispisivanje stringova - string možemo ispisati printf naredbom koristeci

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

Page 25: Stringovi - phy.pmf.unizg.hrtniksic/FI/materijali/OLD/stringovi.pdf · Osnove programiranja – p. 1/12. Ispisivanje stringova - string možemo ispisati printf naredbom koristeci

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

Page 26: Stringovi - phy.pmf.unizg.hrtniksic/FI/materijali/OLD/stringovi.pdf · Osnove programiranja – p. 1/12. Ispisivanje stringova - string možemo ispisati printf naredbom koristeci

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

Page 27: Stringovi - phy.pmf.unizg.hrtniksic/FI/materijali/OLD/stringovi.pdf · Osnove programiranja – p. 1/12. Ispisivanje stringova - string možemo ispisati printf naredbom koristeci

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

Page 28: Stringovi - phy.pmf.unizg.hrtniksic/FI/materijali/OLD/stringovi.pdf · Osnove programiranja – p. 1/12. Ispisivanje stringova - string možemo ispisati printf naredbom koristeci

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

Page 29: Stringovi - phy.pmf.unizg.hrtniksic/FI/materijali/OLD/stringovi.pdf · Osnove programiranja – p. 1/12. Ispisivanje stringova - string možemo ispisati printf naredbom koristeci

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

Page 30: Stringovi - phy.pmf.unizg.hrtniksic/FI/materijali/OLD/stringovi.pdf · Osnove programiranja – p. 1/12. Ispisivanje stringova - string možemo ispisati printf naredbom koristeci

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

Page 31: Stringovi - phy.pmf.unizg.hrtniksic/FI/materijali/OLD/stringovi.pdf · Osnove programiranja – p. 1/12. Ispisivanje stringova - string možemo ispisati printf naredbom koristeci

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

Page 32: Stringovi - phy.pmf.unizg.hrtniksic/FI/materijali/OLD/stringovi.pdf · Osnove programiranja – p. 1/12. Ispisivanje stringova - string možemo ispisati printf naredbom koristeci

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

Page 33: Stringovi - phy.pmf.unizg.hrtniksic/FI/materijali/OLD/stringovi.pdf · Osnove programiranja – p. 1/12. Ispisivanje stringova - string možemo ispisati printf naredbom koristeci

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

Page 34: Stringovi - phy.pmf.unizg.hrtniksic/FI/materijali/OLD/stringovi.pdf · Osnove programiranja – p. 1/12. Ispisivanje stringova - string možemo ispisati printf naredbom koristeci

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

Page 35: Stringovi - phy.pmf.unizg.hrtniksic/FI/materijali/OLD/stringovi.pdf · Osnove programiranja – p. 1/12. Ispisivanje stringova - string možemo ispisati printf naredbom koristeci

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

Page 36: Stringovi - phy.pmf.unizg.hrtniksic/FI/materijali/OLD/stringovi.pdf · Osnove programiranja – p. 1/12. Ispisivanje stringova - string možemo ispisati printf naredbom koristeci

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

Page 37: Stringovi - phy.pmf.unizg.hrtniksic/FI/materijali/OLD/stringovi.pdf · Osnove programiranja – p. 1/12. Ispisivanje stringova - string možemo ispisati printf naredbom koristeci

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

Page 38: Stringovi - phy.pmf.unizg.hrtniksic/FI/materijali/OLD/stringovi.pdf · Osnove programiranja – p. 1/12. Ispisivanje stringova - string možemo ispisati printf naredbom koristeci

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

Page 39: Stringovi - phy.pmf.unizg.hrtniksic/FI/materijali/OLD/stringovi.pdf · Osnove programiranja – p. 1/12. Ispisivanje stringova - string možemo ispisati printf naredbom koristeci

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

Page 40: Stringovi - phy.pmf.unizg.hrtniksic/FI/materijali/OLD/stringovi.pdf · Osnove programiranja – p. 1/12. Ispisivanje stringova - string možemo ispisati printf naredbom koristeci

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

Page 41: Stringovi - phy.pmf.unizg.hrtniksic/FI/materijali/OLD/stringovi.pdf · Osnove programiranja – p. 1/12. Ispisivanje stringova - string možemo ispisati printf naredbom koristeci

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

Page 42: Stringovi - phy.pmf.unizg.hrtniksic/FI/materijali/OLD/stringovi.pdf · Osnove programiranja – p. 1/12. Ispisivanje stringova - string možemo ispisati printf naredbom koristeci

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

Page 43: Stringovi - phy.pmf.unizg.hrtniksic/FI/materijali/OLD/stringovi.pdf · Osnove programiranja – p. 1/12. Ispisivanje stringova - string možemo ispisati printf naredbom koristeci

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

Page 44: Stringovi - phy.pmf.unizg.hrtniksic/FI/materijali/OLD/stringovi.pdf · Osnove programiranja – p. 1/12. Ispisivanje stringova - string možemo ispisati printf naredbom koristeci

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

Page 45: Stringovi - phy.pmf.unizg.hrtniksic/FI/materijali/OLD/stringovi.pdf · Osnove programiranja – p. 1/12. Ispisivanje stringova - string možemo ispisati printf naredbom koristeci

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

Page 46: Stringovi - phy.pmf.unizg.hrtniksic/FI/materijali/OLD/stringovi.pdf · Osnove programiranja – p. 1/12. Ispisivanje stringova - string možemo ispisati printf naredbom koristeci

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

Page 47: Stringovi - phy.pmf.unizg.hrtniksic/FI/materijali/OLD/stringovi.pdf · Osnove programiranja – p. 1/12. Ispisivanje stringova - string možemo ispisati printf naredbom koristeci

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

Page 48: Stringovi - phy.pmf.unizg.hrtniksic/FI/materijali/OLD/stringovi.pdf · Osnove programiranja – p. 1/12. Ispisivanje stringova - string možemo ispisati printf naredbom koristeci

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

Page 49: Stringovi - phy.pmf.unizg.hrtniksic/FI/materijali/OLD/stringovi.pdf · Osnove programiranja – p. 1/12. Ispisivanje stringova - string možemo ispisati printf naredbom koristeci

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

Page 50: Stringovi - phy.pmf.unizg.hrtniksic/FI/materijali/OLD/stringovi.pdf · Osnove programiranja – p. 1/12. Ispisivanje stringova - string možemo ispisati printf naredbom koristeci

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

Page 51: Stringovi - phy.pmf.unizg.hrtniksic/FI/materijali/OLD/stringovi.pdf · Osnove programiranja – p. 1/12. Ispisivanje stringova - string možemo ispisati printf naredbom koristeci

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

Page 52: Stringovi - phy.pmf.unizg.hrtniksic/FI/materijali/OLD/stringovi.pdf · Osnove programiranja – p. 1/12. Ispisivanje stringova - string možemo ispisati printf naredbom koristeci

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

Page 53: Stringovi - phy.pmf.unizg.hrtniksic/FI/materijali/OLD/stringovi.pdf · Osnove programiranja – p. 1/12. Ispisivanje stringova - string možemo ispisati printf naredbom koristeci

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

Page 54: Stringovi - phy.pmf.unizg.hrtniksic/FI/materijali/OLD/stringovi.pdf · Osnove programiranja – p. 1/12. Ispisivanje stringova - string možemo ispisati printf naredbom koristeci

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

Page 55: Stringovi - phy.pmf.unizg.hrtniksic/FI/materijali/OLD/stringovi.pdf · Osnove programiranja – p. 1/12. Ispisivanje stringova - string možemo ispisati printf naredbom koristeci

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