130 likes | 352 Views
Autori : Igor Janosević, Aleksandar Milovanović, Mateja Mitić Odeljenje: E32. Stringovi (niske). Stringovi (niske). String je jednodimenzionalni niz tipa char . Da bi se označio kraj tog niza, dopisuje se NULL znak: '‘ koji je sastavni deo stringa.
E N D
Autori: Igor Janosević, Aleksandar Milovanović, Mateja Mitić Odeljenje: E32 Stringovi (niske)
Stringovi (niske) • String je jednodimenzionalni niz tipa char. • Da bi se označio kraj tog niza, dopisuje se NULL znak: '\0‘koji je sastavni deo stringa. • Rad sa stringovima podrazumeva poseban način korišćenja niza znakova. • Zbog završnog znaka potreban je memorijski prostor za jedan veći od broja znakova između navodnika.
String konstante • Za C kompajler string konstanta je svaki niz znakova između navodnika. • Znaci između navodnika zajedno sa završnim znakom se registruju u susednim memorijskim lokacijama. • Zbog prisustva završnog znaka string konstanta "C"nije jednaka znakovnoj konsranti 'C', jer je "C" niz od dva znaka: 'C' i'\0'. • Prazna string konstanta " "se sastoji samo od završnog znaka.
Inicijajizacija stringova • Stringovi se mogu inicijalizovati korišćenjem string konstanti. • Na primer char s[]=“JABUKA"; inicijalizuje statički niz s datom string konstantom. • Ovaj način inicijalizacije predstavlja skraćeni oblik inicijalizacije niza char s[]={‘J',‘A',' B',‘U' ,‘K' , ‘A' '\0'}; • Ako bi se u inicijalizaciji izostavio završni znak to više ne bi bio string već samo niz znakova. • Kao i kod drugih nizova, ime s predstavlja pokazivač na nulti element niza.
Učitavanje stringova • Pri učitavanju stringova treba voditi računa o dve stvari: kako rezervisati memoriju za čuvanje stringa i kako primeniti funkciju za učitavanje stringa. • Na početku rada potrebno je odrediti maksimalnu dužinu stringa koji će se učitavati da bi kompajler dodelio traženi memorijski prostor. • Na primer, deklaracijom char ime[101];uvodi se niz ime od najviše sto jednog elementa. • Učitavanje se može realizovati pomoću dve funkcije iz biblioteke stdio.h, a to su scanf() i gets()ali se funkcija gets()mnogo češće koristi od funkcije scanf().
Ispis stringova • Za ispis stringova se koriste dve funkcije iz biblioteke stdio.h a to su puts() i printf(). • Funkcija puts() ispisuje samo stringove, a printf() može ispisivati mešovite podatke. • Dok se pri ispisu stringa sa puts() automatski prelazi na novu liniju pri korišćenju printf() to se mora naznačiti sa '\n'. • Na primer: printf("%s\n" ,string); ima isti efekat kao i puts(string);
<string.h> • Za laksu manipulaciju stringova, koriste se funkcije iz biblioteke string.h a neke od najvažnijih funkcija su: • Funkcija strlen() koja vraća broj znakova nekog stringa bez završnog NULL znaka • Funkcije strstr()istrchr() se koriste za nalaženje znakova i reči unutar većeg stringa. • Funkcija strcat() povezuje dva stringa tako što prvom ukloni završni znak i na njega doda drugi string. • Funkcija strcmp() se koristi za poređenje dva stringa. • Funkcija strcpy() se koristi za kopiranje sadržaja stringa. • Funkcijaatoi() pretvara ASCII string u ceo broj.
Primer korišćenja funkcijestrcpy() Izvršavanjem programa ispisuje se: HaloZdravo
Primer korišćenja funkcijeatoi() Izvršavanjem programa ispisuje se: 319681 6-13035 Dobija se pogrešan rezultat zbog prekoračenja intervala celih brojeva.
Primer korišćenja funkcijestrstr() Izvršavanjem programa ispisuje se: gramiranje
Literatura • Računari i Programiranje III (Link) • Programski jezik C, Stringovi (Link) • Programski jezik C (Link)