STRINGOVI Radili Igor Miladinovic Marko Milankov Nikola Randjelovic

  • Slides: 17
Download presentation
STRINGOVI Radili: Igor Miladinovic Marko Milankov Nikola Randjelovic

STRINGOVI Radili: Igor Miladinovic Marko Milankov Nikola Randjelovic

Sta je STRING ? � String je jednodimenzionalni niz tipa char. Da bi se

Sta je STRING ? � String je jednodimenzionalni niz tipa char. Da bi se znalo gde se u nizu završava string dopisuje mu se takozvani zavšni ili NULL znak: '', koji je sastavni deo stringa. Rad sa stringovima predstavija specifican nacin korišćenja niza znakova. ”hello” h e l l o

String konstante Za C kompajler string konstanta je svaki niz znakova između navodnika. Znaci

String konstante Za C kompajler string konstanta je svaki niz znakova između navodnika. Znaci između navodnika plus završni znak se registruju u nizu susednih memorijskih lokacija. Zbog prisustva završnog znaka string konstanta "C“ nije jednaka znakovnoj konstanti 'C', jer je "C" niz od dva znaka: 'C' i ''. Prazna string konstanta " " se sastoji samo od završnog znaka. Ø Inicijajizacija stringova: Stringovi se mogu inicijalizovati korišćenjem string konstanti. Na primer, operator static char s[]="IBMPC"; Inicijalizuje statički niz s datom string konstantom. . Ovaj način inicijalizacije predstavlja skraćeni oblik inicijalizacije niza 1 static char s[]={I, 'B' : M', 'P' , 'C' , 'O'}; 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, tako da važi: 1 s=&s[0], *s='I', i *(s+1)=s[1]='B'

Učitavanje stringova Pri učitavanju stringova treba voditi računa o dve stvari: kako rezervisati memoriju

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 prestor. Učitavanje se može realizovati pomoću dve bibliotečne funkcije scanf () i gets ().

Primer ucitavanja stringa main() { char imel[50], ime 2[60]; int brojac, god; printf(Unesite ime

Primer ucitavanja stringa main() { char imel[50], ime 2[60]; int brojac, god; printf(Unesite ime i prezime. n”); brojac=scanf("%s%5 s”, ime 1, ime 2); printf("Ucitana su %d podatka: %s %s. n" , brojac, ime 1, ime 2); }

Ispis stringova Za ispis stringova se koriste dve bibliotečke funkcije puts() i printf(). Funkcija

Ispis stringova Za ispis stringova se koriste dve bibliotečke funkcije 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'. Ova funkcija ima samo jedan argument - pokazivač na početnu tačku stringa (ill podstringa) koji treba ispisati. Ova fuinkcija ispisuje sve znake počev od tačke na koju pokazuje argument funkcije do završinog znaka ('') koga zamenjuje znakom za "novu liniju" tako da se posle ispisa stringa prelazi na novu liniju. Zaglavlje funkcije puts() ima sledeći oblik: int puts(char *string);

Primer stringova Napisati program koji ispisuje string, u direktnom i inverznom poredku. #include <stdio.

Primer stringova Napisati program koji ispisuje string, u direktnom i inverznom poredku. #include <stdio. h> void main() { char s[]="IBMPC-486"; . . . 1 char *pok; . . . . 2 pok=s; . . 3 while (*pok) putchar(*pok++ ); . . . 4 putchar('n'); while (--pok>=s) putchar(*pok); . . . 5 putchar('n'); . . . 6 getch(); }

Funkcije; Ø strlen(s) vraća dužinu svog argumenta s, isključujući završni znak ’�’ Ø ucitaj_rec()

Funkcije; Ø strlen(s) vraća dužinu svog argumenta s, isključujući završni znak ’’ Ø ucitaj_rec() ucitava od pocetka tj. do kraja prve beline ili lim-1 karakter , cuva ga ‘’ Ø squeeze(s, c) uklanja sve primerke znaka c iz stringa s Ø strcat(s, t) spaja string t na kraj stringa s. Funkcija strcat() pretpostavlja da u stringu s ima dovoljno mesta za ovu kombinaciju. Ø atoi()

Funkcije; Ø reverse(s) preokreće string s u mestu. Ø itoa() ceo broj pretvara u

Funkcije; Ø reverse(s) preokreće string s u mestu. Ø itoa() ceo broj pretvara u nisku znakova (inverzna od atoi() ). Ø trim() klanja beline sa kraja s. Ø strindex(s, t) vraca indeks t-a u s-u, -1 ako ga nema. Ø atof(s) string s pretvara u njemu ekvivalentan broj sa pokretnim zarezom dvostruke tačnosti.

strlen(s) /* strlen: vraca duzinu od s */ int strlen(char s[]){ int i; i=0;

strlen(s) /* strlen: vraca duzinu od s */ int strlen(char s[]){ int i; i=0; while( s[i]!='' ) i++; return i; } strlen() i druge funkcije za stringove deklarisane su u zaglavlju <string. h>

ucitaj_rec() int ucitaj_rec(char s[], int lim){ int c, i; for(i=0; i<lim-1 && (c=getchar())!=EOF) &&

ucitaj_rec() int ucitaj_rec(char s[], int lim){ int c, i; for(i=0; i<lim-1 && (c=getchar())!=EOF) && c!='n' && c!='t'; i++) s[i]=c; s[i]=''; return i; }

squeeze(s, c) /* squeeze: brise sve c iz s */ void squeeze( char s[],

squeeze(s, c) /* squeeze: brise sve c iz s */ void squeeze( char s[], int c){ int i, j; for(i=j=0; s[i]!=''; i++) if(s[i]!=c) s[j++]=s[i]; s[j]=''; }

atoi() za pretvaranje stringa u njegov numerički ekvivalent. Ulazni string može da sadrži vodeći

atoi() za pretvaranje stringa u njegov numerički ekvivalent. Ulazni string može da sadrži vodeći prazan prostor i opcioni znak koraci: • preskočiti prazan prostor, ako postoji • pročitati znak broja, ako postoji • pročitati celobrojni deo i pretvoriti ga

reverse(s) #include<string. h> /* reverse: obrce string s u mestu */ void reverse(char s[])

reverse(s) #include<string. h> /* reverse: obrce string s u mestu */ void reverse(char s[]) { int c, i, j; for( i= 0, j=strlen(s)-1; i<j; i++, j--) { c=s[i]; s[i]=s[j]; s[j]=c } }

KRAJ STRANICE : qhttp: //book. tsp. edu. rs/mod/page/view. p hp? id=763 qhttp: //poincare. matf.

KRAJ STRANICE : qhttp: //book. tsp. edu. rs/mod/page/view. p hp? id=763 qhttp: //poincare. matf. bg. ac. rs/~marija/p 1 /Programski%20 jezik%20 C%20 Stringovi. pdf

Pesma:

Pesma: