osnove programiranja uvod - phy.pmf.unizg.hrtniksic/fi/materijali/lec9.pdf · osnove programiranja...
TRANSCRIPT
Osnoveprogramiranja
StringoviUvod
Ispis stringova
NULL znak
Ucitavanje stringova
String Librarystrlen funkcija
strcmp funkcija
strcpy funkcija
Uvod• string je niz znakova koji završava NULL
znakom \0• ascii kod NULL znaka je 0• svaki string po konvenciji završava NULL
znakom pa za spremanje stringa od n znakovatrebamo polje dužine n+1
• stringove incijaliziramo na dva nacinachar A[]="blabla";char A[]={’b’,’l’,’a’,’b’,’l’,’a’,’\0’};
’b’ ’l’ ’a’ ’b’ ’l’ ’a’ ’\0’A
• uocite upotrebu dvostrukih navodnika kod prvognacina inicijalizacije stringa
Osnoveprogramiranja
StringoviUvod
Ispis stringova
NULL znak
Ucitavanje stringova
String Librarystrlen funkcija
strcmp funkcija
strcpy funkcija
Ispis stringova
• string ispisujemo 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);
Osnoveprogramiranja
StringoviUvod
Ispis stringova
NULL znak
Ucitavanje stringova
String Librarystrlen funkcija
strcmp funkcija
strcpy funkcija
Ispis stringova
• string ispisujemo 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);
Osnoveprogramiranja
StringoviUvod
Ispis stringova
NULL znak
Ucitavanje stringova
String Librarystrlen funkcija
strcmp funkcija
strcpy funkcija
Ispis stringova
• string ispisujemo 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);
Kratki tecaj C-a
• string ispisujemo identifikatorom %s
Osnoveprogramiranja
StringoviUvod
Ispis stringova
NULL znak
Ucitavanje stringova
String Librarystrlen funkcija
strcmp funkcija
strcpy funkcija
Ispis stringova
• string ispisujemo 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);
Kratki tecaj C-a
Kratki tec
• identifikator %4.10s znaci da ce se ispisatinajmanje 4, a najviše 10 znakova
• ako je string kraci od 4 znaka, ostatak senadopunjuje bjelinama (space)
• ako je string duži od 10 znakova, višak znakovanece biti prikazan
Osnoveprogramiranja
StringoviUvod
Ispis stringova
NULL znak
Ucitavanje stringova
String Librarystrlen funkcija
strcmp funkcija
strcpy funkcija
Ispis stringova
• string ispisujemo 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);
Kratki tecaj C-a
Kratki tecKratki tecaj C-a
• identifikator %20s znaci da ce se ispisatinajmanje 20 znakova
• ako je string kraci ostatak se nadopunjujebjelinama, a tekst je pozicioniran desno
Osnoveprogramiranja
StringoviUvod
Ispis stringova
NULL znak
Ucitavanje stringova
String Librarystrlen funkcija
strcmp funkcija
strcpy funkcija
Ispis stringova
• string ispisujemo 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);
Kratki tecaj C-a
Kratki tecKratki tecaj C-a
Kratki tecaj C-a
• identifikator %-20s znaci da ce se ispisatinajmanje 20 znakova
• ako je string kraci ostatak se nadopunjujebjelinama, a tekst je pozicioniran lijevo
Osnoveprogramiranja
StringoviUvod
Ispis stringova
NULL znak
Ucitavanje stringova
String Librarystrlen funkcija
strcmp funkcija
strcpy funkcija
NULL znak
char A[]="blabla";printf("%s\n",A);A[3]=’B’;printf("%s\n",A);A[4]=’\0’;printf("%s\n",A);
’b’
0
’l’
1
’a’
2
’b’
3
’l’
4
’a’
5
’\0’
6
• inicijaliziramo string A
Osnoveprogramiranja
StringoviUvod
Ispis stringova
NULL znak
Ucitavanje stringova
String Librarystrlen funkcija
strcmp funkcija
strcpy funkcija
NULL znak
char A[]="blabla";printf("%s\n",A);A[3]=’B’;printf("%s\n",A);A[4]=’\0’;printf("%s\n",A);
’b’
0
’l’
1
’a’
2
’b’
3
’l’
4
’a’
5
’\0’
6
blabla
• ispisujemo string A
Osnoveprogramiranja
StringoviUvod
Ispis stringova
NULL znak
Ucitavanje stringova
String Librarystrlen funkcija
strcmp funkcija
strcpy funkcija
NULL znak
char A[]="blabla";printf("%s\n",A);A[3]=’B’;printf("%s\n",A);A[4]=’\0’;printf("%s\n",A);
’b’
0
’l’
1
’a’
2
’B’
3
’l’
4
’a’
5
’\0’
6
• znak ’b’ u stringu A zamijenimo s ’B’
Osnoveprogramiranja
StringoviUvod
Ispis stringova
NULL znak
Ucitavanje stringova
String Librarystrlen funkcija
strcmp funkcija
strcpy funkcija
NULL znak
char A[]="blabla";printf("%s\n",A);A[3]=’B’;printf("%s\n",A);A[4]=’\0’;printf("%s\n",A);
’b’
0
’l’
1
’a’
2
’B’
3
’l’
4
’a’
5
’\0’
6
blaBla
• ispisujemo string A
Osnoveprogramiranja
StringoviUvod
Ispis stringova
NULL znak
Ucitavanje stringova
String Librarystrlen funkcija
strcmp funkcija
strcpy funkcija
NULL znak
char A[]="blabla";printf("%s\n",A);A[3]=’B’;printf("%s\n",A);A[4]=’\0’;printf("%s\n",A);
’b’
0
’l’
1
’a’
2
’B’
3
’\0’
4
’a’
5
’\0’
6
• znak ’l’ u stringu A zamijenimo s NULL znakom’\0’
• time polje A[4] oznacava kraj stringa
Osnoveprogramiranja
StringoviUvod
Ispis stringova
NULL znak
Ucitavanje stringova
String Librarystrlen funkcija
strcmp funkcija
strcpy funkcija
NULL znak
char A[]="blabla";printf("%s\n",A);A[3]=’B’;printf("%s\n",A);A[4]=’\0’;printf("%s\n",A);
’b’
0
’l’
1
’a’
2
’B’
3
’\0’
4
’a’
5
’\0’
6
blaB
• ispisujemo string A• buduci da polje A[4] oznacava kraj stringa
ispisuje se samo blaB
Osnoveprogramiranja
StringoviUvod
Ispis stringova
NULL znak
Ucitavanje stringova
String Librarystrlen funkcija
strcmp funkcija
strcpy funkcija
Ucitavanje stringova
• string možemo ucitati scanf naredbom koristeciidentifikator %s
• niz završava prvom bjelinom u ulaznom nizuznakova
• iza posljednjeg ucitanog znaka automatski sedodaje NULL znak ’\0’
char A[];scanf("%s",A);
• funkciji scanf prosljedujemo varijablu polja A tj.adresu prvog elementa polja A
• zato u ovom slucaju ispred varijable A u scanfne stavljamo adresni operator
Osnoveprogramiranja
StringoviUvod
Ispis stringova
NULL znak
Ucitavanje stringova
String Librarystrlen funkcija
strcmp funkcija
strcpy funkcija
Ucitavanje stringova
• string možemo ucitati scanf naredbom koristeciidentifikator %s
• niz završava prvom bjelinom u ulaznom nizuznakova
• iza posljednjeg ucitanog znaka automatski sedodaje NULL znak ’\0’
char A[];scanf("%s",A);
• funkciji scanf prosljedujemo varijablu polja A tj.adresu prvog elementa polja A
• zato u ovom slucaju ispred varijable A u scanfne stavljamo adresni operator
Osnoveprogramiranja
StringoviUvod
Ispis stringova
NULL znak
Ucitavanje stringova
String Librarystrlen funkcija
strcmp funkcija
strcpy funkcija
Ucitavanje stringova
• string možemo ucitati scanf naredbom koristeciidentifikator %s
• niz završava prvom bjelinom u ulaznom nizuznakova
• iza posljednjeg ucitanog znaka automatski sedodaje NULL znak ’\0’
char A[];scanf("%s",A);
• funkciji scanf prosljedujemo varijablu polja A tj.adresu prvog elementa polja A
• zato u ovom slucaju ispred varijable A u scanfne stavljamo adresni operator
Osnoveprogramiranja
StringoviUvod
Ispis stringova
NULL znak
Ucitavanje stringova
String Librarystrlen funkcija
strcmp funkcija
strcpy funkcija
• koristeci identifikator %s ne možemo ucitatistring koji u sebi sadrži bjeline jer one služe zaogranicavanje ulaznog polja
• u tom slucaju kao identifikator koristimo uglatezagrade %[]
• unutar zagrada navodimo niz znakova, a ucitavase najveci niz sastavljen od znakova unutaruglatih zagrada
• važno! prije identifikatora %[ treba ostavitirazmak koji funkciji scanf govori da preskoci svebjeline koje prethode znakovnom nizu
• nužno ako to nije prva scanf u programu jerprethodna scanf uvijek ostavlja znak prijelaza unovi red u ulaznom nizu
Osnoveprogramiranja
StringoviUvod
Ispis stringova
NULL znak
Ucitavanje stringova
String Librarystrlen funkcija
strcmp funkcija
strcpy funkcija
char A[128];printf("Unesite string \n");scanf(" %[ abcdefghijklmnopqrstuvwxyz]",A);printf("%s\n",A);printf("Jos jedan...\n");scanf(" %[ abcdefghijklmnopqrstuvwxyz]",A);printf("%s\n",A);
Unos Ispis
Osnoveprogramiranja
StringoviUvod
Ispis stringova
NULL znak
Ucitavanje stringova
String Librarystrlen funkcija
strcmp funkcija
strcpy funkcija
char A[128];printf("Unesite string \n");scanf(" %[ abcdefghijklmnopqrstuvwxyz]",A);printf("%s\n",A);printf("Jos jedan...\n");scanf(" %[ abcdefghijklmnopqrstuvwxyz]",A);printf("%s\n",A);
Unos Ispis
Unesite string
• program traži unos stringa
Osnoveprogramiranja
StringoviUvod
Ispis stringova
NULL znak
Ucitavanje stringova
String Librarystrlen funkcija
strcmp funkcija
strcpy funkcija
char A[128];printf("Unesite string \n");scanf(" %[ abcdefghijklmnopqrstuvwxyz]",A);printf("%s\n",A);printf("Jos jedan...\n");scanf(" %[ abcdefghijklmnopqrstuvwxyz]",A);printf("%s\n",A);
Unos
mali string
Ispis
Unesite string
• scanf ucitava string sastavljen od malih slova irazmaka
• uocite razmak izmedu dvostrukog navodnika iidentifikatora %[, kao i razmak izmeduidentifikatora %[ i znaka a
Osnoveprogramiranja
StringoviUvod
Ispis stringova
NULL znak
Ucitavanje stringova
String Librarystrlen funkcija
strcmp funkcija
strcpy funkcija
char A[128];printf("Unesite string \n");scanf(" %[ abcdefghijklmnopqrstuvwxyz]",A);printf("%s\n",A);printf("Jos jedan...\n");scanf(" %[ abcdefghijklmnopqrstuvwxyz]",A);printf("%s\n",A);
Unos Ispis
mali string
• program ispisuje uneseni string
Osnoveprogramiranja
StringoviUvod
Ispis stringova
NULL znak
Ucitavanje stringova
String Librarystrlen funkcija
strcmp funkcija
strcpy funkcija
char A[128];printf("Unesite string \n");scanf(" %[ abcdefghijklmnopqrstuvwxyz]",A);printf("%s\n",A);printf("Jos jedan...\n");scanf(" %[ abcdefghijklmnopqrstuvwxyz]",A);printf("%s\n",A);
Unos Ispis
Jos jedan
• program traži unos još jednog stringa
Osnoveprogramiranja
StringoviUvod
Ispis stringova
NULL znak
Ucitavanje stringova
String Librarystrlen funkcija
strcmp funkcija
strcpy funkcija
char A[128];printf("Unesite string \n");scanf(" %[ abcdefghijklmnopqrstuvwxyz]",A);printf("%s\n",A);printf("Jos jedan...\n");scanf(" %[ abcdefghijklmnopqrstuvwxyz]",A);printf("%s\n",A);
Unos
mali STRING
Ispis
• korisnik pokušava unjeti string s velikim slovima• scanf prekida ucitavati cim se pojavi znak koji
nije naveden u uglatim zagradama• u ovom slucaju je to slovo S
Osnoveprogramiranja
StringoviUvod
Ispis stringova
NULL znak
Ucitavanje stringova
String Librarystrlen funkcija
strcmp funkcija
strcpy funkcija
char A[128];printf("Unesite string \n");scanf(" %[ abcdefghijklmnopqrstuvwxyz]",A);printf("%s\n",A);printf("Jos jedan...\n");scanf(" %[ abcdefghijklmnopqrstuvwxyz]",A);printf("%s\n",A);
Unos Ispis
mali
• program ispisuje uneseni string• uocite da se ispisuje samo rijec mali jer je
program prekinui ucitavanje stringa na slovu S
Osnoveprogramiranja
StringoviUvod
Ispis stringova
NULL znak
Ucitavanje stringova
String Librarystrlen funkcija
strcmp funkcija
strcpy funkcija
• uocite razmal izmedu dvostrukog navodnika iidentifikatora %[, kao i razmak izmeduidentifikatora %[ i znaka a
• prvi razmak govori funkciji scanf da preskoci svebjeline koje prethode znakovnom nizu
• radi se o bjelinama koje ostaju nakon prethodnihpoziva funkcije scanf
• drugi razmak govori funkciji scanf da, osim malihslova, ucitava i bjeline
Osnoveprogramiranja
StringoviUvod
Ispis stringova
NULL znak
Ucitavanje stringova
String Librarystrlen funkcija
strcmp funkcija
strcpy funkcija
String Library
• biblioteka koja sadrži korisne funkcija zamanipulaciju strignovima
• ukljucujemo je prije main funkcijepredprocesorskom naredbom
#include<string.h>• neke cesto korištene funkcije
• strlen(s) za odredivanje dužine stringa s• strcmp(s1,s2) za usporedivanje stringova s1 i s2• strcpy(s1,s2) za kopiranje stringa s2 u string s1
Osnoveprogramiranja
StringoviUvod
Ispis stringova
NULL znak
Ucitavanje stringova
String Librarystrlen funkcija
strcmp funkcija
strcpy funkcija
strlen funkcija
Primjer upotrebe:
char A[]="Primjer stringa";int duzina=strlen(A);printf("Duzina stringa A: %d\n",duzina);
• inicijaliziramo string od 15 znakova
Osnoveprogramiranja
StringoviUvod
Ispis stringova
NULL znak
Ucitavanje stringova
String Librarystrlen funkcija
strcmp funkcija
strcpy funkcija
strlen funkcija
Primjer upotrebe:
char A[]="Primjer stringa";int duzina=strlen(A);printf("Duzina stringa A: %d\n",duzina);
• funkciji strlen prosljedimo varijablu A tj. adresuprvog elementa stringa A
• funkcija strlen vraca dužinu stringa
Osnoveprogramiranja
StringoviUvod
Ispis stringova
NULL znak
Ucitavanje stringova
String Librarystrlen funkcija
strcmp funkcija
strcpy funkcija
strlen funkcija
Primjer upotrebe:
char A[]="Primjer stringa";int duzina=strlen(A);printf("Duzina stringa A: %d\n",duzina);
• ispišemo dužinu stringa A
Osnoveprogramiranja
StringoviUvod
Ispis stringova
NULL znak
Ucitavanje stringova
String Librarystrlen funkcija
strcmp funkcija
strcpy funkcija
strcmp funkcija
Primjer upotrebe:
char A1[]="VELIKI STRING";char A2[]="mali string";int test=strcmp(A1,A2);
• inicijaliziramo string A1
Osnoveprogramiranja
StringoviUvod
Ispis stringova
NULL znak
Ucitavanje stringova
String Librarystrlen funkcija
strcmp funkcija
strcpy funkcija
strcmp funkcija
Primjer upotrebe:
char A1[]="VELIKI STRING";char A2[]="mali string";int test=strcmp(A1,A2);
• inicijaliziramo string A2
Osnoveprogramiranja
StringoviUvod
Ispis stringova
NULL znak
Ucitavanje stringova
String Librarystrlen funkcija
strcmp funkcija
strcpy funkcija
strcmp funkcija
Primjer upotrebe:
char A1[]="VELIKI STRING";char A2[]="mali string";int test=strcmp(A1,A2);
• funkciji strcmp prosljedimo stringove A1 i A2• funkcija strcmp vraca vrijednost 0 ako su
stringovi jednaki• ako stringovi nisu jednaki strcmp vraca
vrijednost razlicitu od nule
Osnoveprogramiranja
StringoviUvod
Ispis stringova
NULL znak
Ucitavanje stringova
String Librarystrlen funkcija
strcmp funkcija
strcpy funkcija
strcpy funkcija
Primjer upotrebe:
char A1[]="VELIKI STRING";char A2[100];strcpy(A2,A1);
• inicijaliziramo string A1
Osnoveprogramiranja
StringoviUvod
Ispis stringova
NULL znak
Ucitavanje stringova
String Librarystrlen funkcija
strcmp funkcija
strcpy funkcija
strcpy funkcija
Primjer upotrebe:
char A1[]="VELIKI STRING";char A2[100];strcpy(A2,A1);
• deklariramo string A2 u koji cemo kopirati stringA1
• string A2 mora biti barem jednako dug kao i A1
Osnoveprogramiranja
StringoviUvod
Ispis stringova
NULL znak
Ucitavanje stringova
String Librarystrlen funkcija
strcmp funkcija
strcpy funkcija
strcpy funkcija
Primjer upotrebe:
char A1[]="VELIKI STRING";char A2[100];strcpy(A2,A1);
• funkciji strcpy prosljedimo stringove A1 i A2• funkcija strcpy kopira niz znakova A1 u
deklarirano polje A2