On-line učionica

23. jun 2013.

Rad sa stringovima

Filed under: C posle Pascal-a,Programiranje — jelena100janovic @ 11:14 am

Setite se kada smo učili nizove da smo rekli da su stringovi definisani kao niz karaktera ili kao pokazivač na deo memorije koji sadrži znakove. String u C-u je niz od nula ili više karaktera koji se završava oznakom kraja stringa (\ 0):

Slika2

Jako je važno da sačuvamo tu oznaku kraja, jer je to način na koji C „zna“ koliko je dugačak string. Svim standardnim funkcijama za rad sa stringovima je on potrebna za uspešan rad.

U opštem slučaju, osim nekih funkcija koje zahtevaju dužinu (strncat(), strncmp() i strncpy()), ako ne kreirate stringove ručno, ne bi trebalo da imate problema. Trebalo bi da se naviknete da koristite što više korisnih funkcija za rad sa stringovima i izbegavate da ih sami pišete.

Osnovne funkcije za rad sa stringovima

Sve funkcije za rad sa stringovima se nalaze u biblioteci string.h.

Uobičajene funkcije su opisane ispod:

int strcmp(const char *string1,const char *string2)

— Poredi string1 i string2 u cilju određivanja alfabetskog poretka.

char *strcpy(const char *string1,const char *string2)

— Kopira string2 u string1.

int strlen(const char *string)

— Određuje dužinu stringa.

char *strncat(const char *string1, char *string2, size_t n)

— Dopisuje n karaktera iz string2 u string1.

int strncmp(const char *string1, char *string2, size_t n)

— Poredi prvih n karaktera dva stringa.

char *strncpy(const char *string1,const char *string2, size_t n)

— Kopira prvih n karaktera od string2 u string1.

Korišćenje većine ovih funkcija je jednostavno, na primer:

Kod38

Zapamtite da strcpy() vraća kopiju svog prvog argumenta, odredišnog stringa. Zapamtite i da se uvek piše prvo odredišni string, a onda string iz kog se kopira, što se često dešava da pobrkamo prilikom programiranja.

Funkcija strcmp() leksički poredi dva ulazna stringa i vraća:

negativan broj

— ako je string1 leksički manji od string2.

nula

— ako su string1 i string2 leksički jednaki.

pozitivan broj

— ako je string1 leksički veći od string2.

Sledeća stvar može zbuniti početnike, a neretko i iskusne programere, ako zaborave.

Funkcije strncat(), strncmp() i strncpy() su dužinski ograničene verzije svojih generalizacija. One završavaju sličan zadatak, ali samo za prvih n karaktera. Zapamtite da se može izgubiti završavajući znak za string kada koristite ove funkcije, na primer:

Kod39

PAZITE! str2 nema oznaku za kraj stringa!!!

Pretraživanje stringova

Bilioteka string.h takođe sadrži nekoliko funkcija za pretraživanje stringova:

char *strchr(const char *string, int c)

— Pronalazi prvo pojavljivanje karaktera c u stringu.

char *strstr(const char *s1, const char *s2)

— Pronalazi prvo pojavljivanje stringa s2 u stringu s1.

char *strpbrk(const char *s1, const char *s2)

— Vraća pokazivač na prvo pojavljivanje bilo kog karaktera iz stringa s2 u stringu s1, ili prazan pokazivač ako ni jedan karakter iz s2 ne postoji u stringu s1.

strchr() je najjednostavnija za korišćenje, na primer:

Kod40

Nakon izvršavanja ovog dela koda, odg pokazuje na memorijsku lokaciju str1 + 3.

strpbrk() je malo opštija funkcija koja traži prvo pojavljivanje bilo og iz grupe karaktera, na primer:

Kod41

Ovde, odg pokazuje na memorijsku lokaciju str1 + 3, prvo pojavljivanje slova a.

strstr() vraća pokazivač na traženi string ili prazan pokazivač ako string nije nađen. Ako s2 pokazuje na string dužine nula (to jest, string „“), funkcija vraća s1. Na primer,

Kod42

će dati odg = str + 3.

Ostavite komentar »

Nema komentara.

RSS feed for comments on this post. TrackBack URI

Ostavite odgovor

Popunite detalje ispod ili pritisnite na ikonicu da biste se prijavili:

WordPress.com logo

Komentarišet koristeći svoj WordPress.com nalog. Odjavite se / Promeni )

Slika na Tviteru

Komentarišet koristeći svoj Twitter nalog. Odjavite se / Promeni )

Fejsbukova fotografija

Komentarišet koristeći svoj Facebook nalog. Odjavite se / Promeni )

Google+ photo

Komentarišet koristeći svoj Google+ nalog. Odjavite se / Promeni )

Povezivanje sa %s

Blog na WordPress.com.

%d bloggers like this: