You are on page 1of 6

STRINGOVI Definicija stringa: String je niz znakova koji se zavrsava znakom \0.

Prazan string sadrzi samo znak \0. U definiciji stringa naznaceno je da je string niz. To znaci da se kroz string prolazi kao I kroz niz sa indexom. Index prvog znaka stringa je 0. Za string ne moramo znati koliko ima znakova jer je poslednji znak stringa \0. Uslov izlaska iz ciklusa kada se prolazi kroz string je: prolazi kroz string sve dok je znak stringa razlicit od znaka \0. Deklaracija stringa: Char imestringa[MAX] Prilikom inicijalizacije stringa prvo se navodi rezervisana rec char koja oznacava da elementi niza predstavljaju znakovi. Srednje zagrade oznacavaju da je u pitanju niz. Konstantan izraz MAX mora imati uvek za 1 vecu vrednost u odnosu na klasican niz, jer string mora sadrzati znak \0. Na primer ako string treba da prihvati JMBG (jedinstveni maticni broj gradjana) koji uvek ima 13 brojeva, to MAX mora imati vrednost 14. Inicijalizacija stringova: String se moze inicijalizovati prilikom deklaracije stringa ili u toku izvrsavanja programa. Inicijalizacijom stringa se vrsi tako sto se prvom element stringa dodeli znak \0 koji oznacava kraj stringa. Inicijalizacija stringa prilikom deklaracije: char imestringa[MAX]=; /* Nema nista izmedju znakova navoda. */ Inicijalizacija stringa u toku izvrsavanja programa: Imestringa[0]=\0; Unos stringa: Unos stringa se najcesce vrsi bez indexa, kao sto je to slucaj kod niza, a uz pomoc funkicaj snaf ili gets. Scanf(%s, imestringa); ili Gets(imestringa); Format %s oznacava konverziju u sting. Funkcija fgets omogucava unos stringa sve dok se ne pritisne ENTER i time dodaje znak \0. Ako funkcija naidje na gresku prilikom unosa vraca simbolicku konstantu NULL. Ispis stringa: Ispis stringa se najcesce vrsi bez koriscenja indexa (za razliku od niza) a uz pomoc funkcija printf ili puts. Printf(%s, imestringa); ili Puts(imestringa);

Funkcija puts izvrsava ispis znakova sve dok se ne dodje do znaka \0 i prelazi u novi red. Primer 1: Napisati program koji omogucava unos stringa s i utvrdjuje koliko se puta znak c nalazi u stringu s. Znak c se unosi sa tastature. #include<stdio.h> #include<string.h> /* u ovoj biblioteci se nalazi funkcija fgets. */ #define MAX 30 Main() { char c, s[MAX]; Unsigned i,br; s*0+=\0; /* inicijalizacija stringa s */ printf(String=); gets(s) /* unos stringa s. */ printf(Znak=); //c=getchar(); br=0, i=0; while(s*i+!=\0) { if(s[i]==c) br++; i++; /* kada koristite while ciklus cesto zaboravite da povecate index sa kojim se prolazi kroz string */ } Printf(\n Broj pojave= %d, br); //getch(); } Primer 2: Napisati c program koji vrsi sazimanje stringa s, tako sto se uzastopni visestruki niz praznina zamenjuje sa samo jednom prazninom. #include<stdio.h> #include<string.h> #define MAX 30 main() { char c, s[MAX]; unsigned i,j; s*0+=\0; printf(String=); gets(s); i=0; while(s*i+!=\0)

{ /* preskaci znakove do prve praznine */ while(s*i+!= && s*i+!=\0) i++; if(s*i+!=\0) { if(s*i+1+!= ) i++; /* ako je sledece mesto prazno prelazi na sledece */ else{ /* sazimanje stringa. */ j=i; while(s*j+!=\0) s*j+=s*j+1+, j++; } } } printf(\n\n Novi string= %s,s); //getch(); } STRINGOVI I FUNKCIJE Iz definicije se vidi da je string niz znakova. To znaci da sve osobine koje su vazile za niz vaze i za string. Kao i kod nizova string se ne moze preneti kao argument funkcije, vec se po referenci prosledjuje adresa pocetka stringa. Za rad sa stringovima u funkcijama osim adrese pocetka stringa nista vise nije potrebno, jer se string zavrsava sa znakom \0. Prilikom testiranja zadataka sa stringovima, potrebno je samo prilikom prvog testa uneti string. Sva ostala testiranja kada se unosi string pritiskate taster desna strelica i string koji ste uneli bice ponovo ispisan. Primer 1: Napisati funkciju unos koja omogucava unos imena. Zavrsetak unosa imena je pritisak na taster ENTER. Ako korisnik unese neki karakter koji nije slovo, osim praznog STRINGOVI I POKAZIVACI Indentifikator stringa je konstantan pokazivac (ne smete mu promeniti adresu na koju pokazuje) na pocetak stringa, Veza izmedju stringa i pokazivaca moze se predstaviti pomocu formule s[i] <-> *(s+i) Kraj stirnga oznacava se znakom \0 cija je vrednost broj nula. Prenosom po reference adrese pocetka stringa formalnom argumentnu funkcije omogucava da se pomocu formalnog argument prolazi kroz string. OSNOVNE FUNKCIJE ZA RAD SA ZNAKOVIMA I STRINGOVIMA Osnovne funkcije za rad sa znakovima /* ispis novog stringa */

Zaglavlje <ctype.h> deklarise funkcije za proveravanje znakova, tj. odredjuje u koju kategoriju spade dati znak (malo slovo, veliko slovo, broj, itd.). int insalnum(int character); character je ASCII znak koji se proverava. Funkcija insalnum vraca vrednost razlicitu od nule ako je navedeni znak character slovo ili cifra. int isalpha(int character); character je ASCII znak koji se proverava. Funkcija isalpha vraca vrednost razlicitu od nule ako je navedeni znak slovo. int isdigit(int character); character - je ASCII znak koji se proverava. Funkcija isdigit vraca vrednost razlicitu od nule ako je navedeni znak character cifra. int isgraph(int character); character - je ASCII znak koji se proverava. Funkcija isdgraph vraca vrednost razlicitu od nule ako se navedeni znak character moze prikazati na ekranu (opseg kodova od 33 do 126) izuzimajuci znak za razmak. int islower(int character); character je ASCII znak koji se proverava. Funkcija islower vraca vrednost razlicitu od nule ako je navedeni znak character malo slovo. int isupper(int character); character - je ASCII znak koji se proverava. Funkcija isupuper vraca vrednost razlicitu od nule ako je navedeni znak character veliko slovo. int isprint(int character);

NISAM STIGAO SVE DA NAPISEM.

Osnovne funkcije za rad sa stringovima U zaglavlju <string.h> definisane su funkcije za rad sa stringovima. char *strcpy(char *s, char *t); Funkcija strcpy kopira string t u string s znak po znak. Prethodni sadrzaj stringa s se gubi. Funkcija vraca pokazivac na string s.

char *strucpy(char *s, char *t, int n);

Funkcija strucpy kopira privh n znakova iz stringa t u string s. Funkcija vraca pokazivac na string s. char *strcat(char *s, char *t); Funkcija strcat dodaje string t na kraj stringa s i vraca pokazivac na string s. char *strncat(char *s, char *t, int n); Funkcija strncat dopisuje najvise n znakova iz stringa t na kraj stringa s. int *strcmp(char *s, char *t); Funkcija strcpm poredi dva stringa znak po znak. Ako je znak u prvom stringu s veci od odgovarajuceg znaka u drugom stringu t, funkcija vraca negativnu vrednost. Ako su stringovi indenticni funkcija vraca 0. int *strncmp(char *s, char *t, int n); Funkcija strncmp poredi prvih n bajtova dva niza znakova. Funkcija je identicna funkcija strcmp, stim sto poredi samo privh n karaktera. char *strchr(char *s, int character); Funkcija strchr trazi prvo pojavljivanje navedenog ASCII znaka character u stirngu s, te ako uspesno obavi zadatak funkcija vraca pokazivac na prvo pojavljivanje navedenog znaka ili vredenost NULL u suprotnom. char *strrchr(char *s, int character); Funkcija strrchr vraca pokazivac na prvu pojavu odredjenog znaka character s desne strane stringa s. Ako funkcija uspesno obavi zadatak bice vracen pokazivac na prvu poziciju unutar stringa, ili vrednost NULL u suprotnom. char *strstr(char *s, char *t); Funkcija strstr vraca pokazivac na prvu pojavu podstringa t unutar stringa s. Ako uspesno obavi zadatak funkcija vraca pokazivac na prvu pojavu podstringa, ili vrednost NULL u suprotnom. int strlen(char *s); Funkcija strlen vraca duzinu stringa s u bajtovima, tj. broj znakova stringa bez znaka \0. char *strtok(char *s, char *tokeni); Funkcija strtok vraca pokazivac na lokaciju tokena u stringu. U stringu s se traze tokeni. Ako je string NULL, funkcija strtok koristi zavrsnu lokaciju prethodnog stringa. Tokeni predstavlja string koji sadrzi

tokene koje treba naci. Ako uspesno obavi zadatak, funkcija vraca pokazivac na poziciju tokena. Ako ni jedan token nije pronadjen funkcija strtok vraca vrednost NULL

Funkcije za numericke konverzije int atoi(char *s); Funkcija atoi konvertuje string s u celobrojnu vrednost. Funkcija vrsi konvertovanje sve dok se ne naidje na nevazeci karakter unutar stringa ili znaka \0. Funkcija ne pruza informaciju da li postoje nevazeci znakovi unutar stringa. double atof(char *s); Funkcija atof konvertuje string s u decimalnu vrednost. Funkcija vrsi konvertovanje sve dok se ne naidje na nevazeci karakter unutar stringa ili znaka \0. Funkcija ne pruza informaciju da li postoje nevazeci znakovi unutar stringa.

You might also like