NIZ ali STRING prikažemo kot tabelo, ki je sestavljen iz več znakov, ter zaključen z ASCII kodo 0.

Podobni dokumenti
Diapozitiv 1

Microsoft Word - M docx

MATLAB programiranje MATLAB... programski jezik in programersko okolje Zakaj Matlab? tipičen proceduralni jezik enostaven za uporabo hitro učenje prir

Microsoft PowerPoint - Java_spremenljivke

RAČUNALNIŠKI PRAKTIKUM d o c. d r. A N D R E J T A R A N E N K O Kdo bo z vami? Predavatelj: dr. Andrej Taranenko

Microsoft PowerPoint - Objekti_gradnja.ppt

Diapozitiv 1

RAM stroj Nataša Naglič 4. junij RAM RAM - random access machine Bralno pisalni, eno akumulatorski računalnik. Sestavljajo ga bralni in pisalni

Turingov stroj in programiranje Barbara Strniša Opis in definicija Definirajmo nekaj oznak: Σ abeceda... končna neprazna množica simbolo

INFORMATOR BIROKRAT 1/2011

Urejevalna razdalja Avtorji: Nino Cajnkar, Gregor Kikelj Mentorica: Anja Petković 1 Motivacija Tajnica v posadki MARS - a je pridna delavka, ampak se

1 MMK - Spletne tehnologije Vaja 5: Spletni obrazci Vaja 5 : Spletni obrazci 1. Element form Spletni obrazci so namenjeni zbiranju uporabniških podatk

Microsoft Word - M _mod..docx

Microsoft Word - UP_Lekcija04_2014.docx

Diapozitiv 1

Priloga 1: Pravila za oblikovanje in uporabo standardiziranih referenc pri opravljanju plačilnih storitev Stran 4012 / Št. 34 / Uradni lis

Navodila Trgovina iCenter

ARS1

NEVTRIN d.o.o. Podjetje za razvoj elektronike, Podgorje 42a, 1241 Kamnik, Slovenia Telefon: Faks.: in

DN5(Kor).dvi

Strojna oprema

TRGOVSKI PORTAL SPLETNA APLIKACIJA NAMENJENA TRGOVCEM POGOSTA VPRAŠANJA IN ODGOVORI Ljubljana, Verzija 1.0

Microsoft Word - vaje2_ora.doc

PowerPointova predstavitev

Microsoft PowerPoint _12_15-11_predavanje(1_00)-IR-pdf

Zbornica zdravstvene in babiške nege Slovenije Zveza strokovnih društev medicinskih sester, babic in zdravstvenih tehnikov Slovenije Stanje:

Microsoft Word - CNC obdelava kazalo vsebine.doc

Slide 1

Sistemi Daljinskega Vodenja Vaja 3 Matej Kristan Laboratorij za Strojni Vid Fakulteta za elektrotehniko, Univerza v Ljubl

COBISS3/Medknjižnična izposoja

Uradni list RS - 12(71)/2005, Mednarodne pogodbe

BYOB Žogica v vesolju Besedilo naloge Glavna ideja igre je paziti, da žoga ne pade na tla igralne površine, pri tem pa zbrati čim več točk. Podobno ig

Poročilo za 1. del seminarske naloge- igrica Kača Opis igrice Kača (Snake) je klasična igrica, pogosto prednaložena na malce starejših mobilnih telefo

(Microsoft Word - U\350enje telegrafije po Kochovi metodi.doc)

Delavnica Načrtovanje digitalnih vezij

Datum in kraj

Space Invaders Opis igre: Originalna igra: Space Invaders je arkadna igra, ki so jo ustvarili leta Bila je ena izmed prvih streljaških iger, v k

GHOSTBUSTERS navodila za učitelje O PROJEKTU S tem projektom se učenci sami naučijo izdelati igro. Ustvariti morajo več ikon (duhcov ali kaj drugega)

Programska sprememba oddelka šole

Vaja04_Ver02

APS1

Vgrajeni sistemi Uvod & ponovitev C

Poročanje izdanih računov pri gotovinskem poslovanju

Microsoft Word - M docx

Microsoft Word - avd_vaje_ars1_1.doc

TRGOVSKI PORTAL SPLETNA APLIKACIJA NAMENJENA TRGOVCEM NAVODILA ZA REGISTRACIJO IN PRIJAVO Ljubljana, Verzija 1.1,

Kazalne naprave in tipkovnica Uporabniški priročnik

(Microsoft Word - MSDN AA Navodila za \232tudente FS.doc)

Orodje za izvoz podatkov

scratch

BiokemInfo - Pregled funkcij

UNIVERZA V LJUBLJANI FAKULTETA ZA RAČUNALNIŠTVO IN INFORMATIKO Andraž Drčar Prevajanje javanskih programov z vstavljeno zložno kodo DIPLOMSKO DELO UNI

Document ID / Revision : 0519/1.3 ID Issuer System (sistem izdajatelja identifikacijskih oznak) Navodila za registracijo gospodarskih subjektov

Navodila za pripravo oglasov na strani Med.Over.Net v 2.2 Statistično najboljši odziv uporabnikov je na oglase, ki hitro in neposredno prenesejo osnov

Obračun storitev v vrtcu in šoli

Bilten 13. državnega srednješolskega tekmovanja ACM v znanju računalništva, 2018

Prekinitveni način delovanja PLK Glavni program (OB1; MAIN) se izvaja ciklično Prekinitev začasno ustavi izvajanje glavnega programa in zažene izvajan

DKMPT

Najprej si poglejmo učilnico. Za vse začetnike lahko tukaj najdete čudovito knjigo Python za programiranje. Poda odlično iztočnico za učenje. Priporoč

Microsoft Word - PRO1_2_Java_2015_12_22

Spoznajmo PowerPoint 2013

11. srednješolsko tekmovanje ACM v znanju računalništva Šolsko tekmovanje 22. januarja 2016 NASVETI ZA TEKMOVALCE Naloge na tem šolskem tekmovanju pok

11/21/2017 SQL-ODBC Povezava do podatkovne baze modul pyodbc povezovalni niz (eksplicitno, ali z uporabo DSN) In [6]: import pyodbc from future import

Vaja 2 Virtualizacija fizičnih strežnikov in virtualni PC A. Strežnik Vmware ESX Namestitev strežnika VMware ESX 3.5 na fizični strežnik 2. Nas

Kazalne naprave in tipkovnica Vodnik za uporabnike

Sledilna ploščica in tipkovnica Uporabniški priročnik

Bilten 3. državnega srednješolskega tekmovanja IJS v znanju računalništva, 2008

Microsoft Word doc

Microsoft Word - ELEKTROTEHNIKA2_ junij 2013_pola1 in 2

DODATEK_F8

PowerApps

Navodila za uporabo ver

Nasveti za 1. in 2. skupino 1 8. tekmovanje ACM v znanju računalništva za srednješolce 23. marca 2013 NASVETI ZA 1. IN 2. SKUPINO Nekatere naloge so t

Navodila Trgovina iCenter

Microsoft Word - Seštevamo stotice.doc

Modem in krajevno omrežje Uporabniški priročnik

Teorija kodiranja in kriptografija 2013/ AES

Microsoft Word - NAVODILA ZA UPORABO.docx

TRGOVSKI PORTAL SPLETNA APLIKACIJA NAMENJENA TRGOVCEM NAVODILA ZA REGISTRACIJO IN PRIJAVO Ljubljana, Verzija 1.1

COBISS COBISS3/Katalogizacija 7.3 VNOS PODATKOV Podatke vnašamo ali spreminjamo z vpisom v vnosno polje, z izbiro iz šifranta ali spustnega seznama. 7

Vaje: Matrike 1. Ugani rezultat, nato pa dokaži z indukcijo: (a) (b) [ ] n 1 1 ; n N 0 1 n ; n N Pokaži, da je množica x 0 y 0 x

12. tekmovanje ACM v znanju računalništva Institut Jožef Stefan, Ljubljana, 25. marca 2017 Bilten

Ime in priimek: Vpisna št: FAKULTETA ZA MATEMATIKO IN FIZIKO Oddelek za matematiko Statistika Pisni izpit 6. julij 2018 Navodila Pazljivo preberite be

NAVODILA ZA IZPOLNJEVANJE OBRAZCA

Predlog stališča Republike Slovenije

Navodila za programsko opremo FeriX Namestitev na trdi disk Avtor navodil: Martin Terbuc Datum: December 2007 Center odprte kode Slovenije Spletna str

Microsoft PowerPoint - seminar_ pptx

STAVKI _5_

INFORMATOR BIROKRAT 1/2011

PowerPoint Presentation

Priročnik za uporabnika SLO _09

Watch 40_MT40X_UM_SL.pdf

Delavnica Načrtovanje digitalnih vezij

POMOČ PREDSTAVITEV EKOSKLADOVNICE UPORABLJENA TERMINOLOGIJA REGISTRACIJA V EKOSKLADOVNICO PRIJAVA V EKOSKLADOVNICO OBJAVA PRISPEVKA ISKANJE PRISPEVKOV

Operacijo delno financira Evropska unija, in sicer iz Evropskega socialnega sklada. Javni razpis za izbor operacij se izvaja v okviru Operativnega pro

Društvo za elektronske športe - spid.si Vaneča 69a 9201 Puconci Pravila tekmovanja na EPICENTER LAN 12 Hearthstone Na dogodku izvaja: Blaž Oršoš Datum

Navodila za študente

REPUBLIKA SLOVENIJA SLUŽBA VLADE REPUBLIKE SLOVENIJE ZA RAZVOJ IN EVROPSKO KOHEZIJSKO POLITIKO NAVODILA ZA PRIJAVO LISTIN NA ZZI V PRIMERU PRO RATA V

Transkripcija:

PODATKI TIPA STRING NIZ ali STRING prikažemo kot tabelo, ki je sestavljen iz več znakov, ter zaključen z ASCII kodo 0. T O ' ' J E ' ' N I Z '\0' Splošne lastnosti: predstavitev podatkovnega tipa: kot vektor, kot tabela število segmentov določimo ob deklaraciji - indeks je tipa integer, celo število od 0 do n -1 kot večina podatkovnih tipov, ima tudi string svoje standardne funkcije in procedure. Deklaracijske zakonitosti: char niz[255]; dolžina niza je nepredznačeno celo število od 0 254 P O N E D E L J E K niz je vektorska veličina, ima začetek, smer in dolžino. Vsak niz ima za podatki en blok, v katerem je zapisan konec niza ascii koda 0! P O N E D E L J E K \0 Zgled deklaracije: char a[20]; /* niz je sestavljen iz 20 znakov */ a - dvajset znakov Deklaracija konstante nad podatkovnim tipom string; Inicializacija ob deklaraciji in izpis podatkov: char a[20] = "Primer"; /* niz je sestavljen iz 20 znakov */ printf("v spremenljivki a je vrednost %s\n",a); nepravilna uporaba (napako javi že prevajalnik!) char a[20]; a="primer"; // vrednosti prirejamo s pomočjo vgrajenih funkcij printf("%s\n",a);

Branje podatkov: char a[20]; /* niz je sestavljen iz 20 znakov */ prinf("vnesi niz: "); scanf("%s",a); /* ni znaka & pred spremenljivko*/ printf("vnesen niz je %s.\n",a); Namesto scanf, gets uporabi raje fgets. Lahko pa se uporabi tudi scanf ali gets, samo paziti je potrebno na velikost vnešenega teksta scanf in gets nimata kontrole vnosa števila podatkov in lahko pride do prepisa podatkov (overflow!)! Pri scanf se prebere samo ena beseda (torej do presledka!), gets in fgets pa prebere tudi znak za skok v novo vrstico. Torej vsak ima svoj problem. Lahko se uporabi tudi zanko in bere znak po znak z ukazom getchar() vse dokler ne vnesemo znaka '\n' le tega nato zamenjamo z '\0'. char p[200]; scanf("%s",p); // pazi prebere samo eno besedo! printf("vnesen niz je %s.\n",p); fflush(stdin); fgets(p,200,stdin); // prebere vse dokler ne pritisnemo ENTER žal se tudi znak enter shrani printf("vnesen niz je %s.\n",p); Če v ta program vnesemo pri prvem vnosu "Kekec in pehta" in pri drugem vnosu "Kekec in pehta" nam bo program izpisal: Vnesi niz: Kekec in pehta Vnesen niz je Kekec. Vnesi niz: Kekec in pehta Vnesen niz je Kekec in pehta. Če je vnesena beseda daljša od velikosti niza, se ta odreže in na zadnjem znaku se vstavi znak za konec niza '\0'. Kako se znebimo skoka v novo vrstico, če preberemo niz s pomočjo ukaza fgets if (niz[strlen(b2)-1] == '\n') // vnesemo celotno vrstico niz[strlen(b2)-1] = '\0'; // zamenjamo skok v novo vrstico z 0 znakom stdin, stdout, stderr, fflush stdin standard input navadno tipkovnica stdout standard output monitor stderr standard error naprava na katero naj se prikazujejo napake monitor fflush počisti - izprazne (izpiše, prebere) vse kar je ostalo od prejšnjih ukazov v tokovih (stdin,stdout,stderr).

NIZOVNE FUNKCIJE IN PROCEDURE Za uporabo nizovnih funkcij potrebujemo vključiti knjižnico string.h char *stpcpy (const char *dest,const char *src) Kopiraj niz iz enega v drugega, kazalec je postavljen na konec niza. int strcmp(const char *string1,const char *string2) Primerjaj dva niza - alfabetično char *strcpy(const char *string1,const char *string2) Kopira niz string2 v stringl. char *strerror(int errnum) pridobi sporočilo o napaki, glede na napako char *strcat(char *dest, const char *src) pripni niz znakov iz src niza v dest niz int strlen(const char *string) Vrni dolžino nekega niza char *strncat(const char *string1, char *string2, size_t n) pripni n znakov iz string2 na string1. int strncmp(const char *string1, char *string2, size_t n) Primerjaj prvih n znakov dveh nizov. char *strncpy(const char *string1,const char *string2, size_t n) kopiraj prvih n znakov string2 v string1. int strcasecmp(const char *s1, const char *s2) ne glede na velikost črk primerjaj niza - kot strcmp(). int strncasecmp(const char *s1, const char *s2, int n) ne glede na velikost črk primerjaj n znakov v nizih - kot strncmp(). Iskalne funkcije char *strchr(const char *string, int c) Najde prvi znak c v nizu string char *strrchr(const char *string, int c) Najde zadnji znak c v nizu string. char *strstr(const char *s1, const char *s2) najde prvi niz s2 v nizu s1. char *strpbrk(const char *s1, const char *s2) -- returns a pointer to the first occurrence in string s1 of any character from string s2, or a null pointer if no character from s2 exists in s1 size_t strspn(const char *s1, const char *s2) -- returns the number of characters at the begining of s1 that match s2. size_t strcspn(const char *s1, const char *s2) -- returns the number of characters at the begining of s1 that do not match s2. char *strtok(char *s1, const char *s2) -- break the string pointed to by s1 into a sequence of tokens, each of which is delimited by one or more characters from the string pointed to by s2. char *strtok_r(char *s1, const char *s2, char **lasts) -- has the same functionality as strtok() except that a pointer to a string placeholder lasts must be supplied by the caller. Primeri uporabe funkcije: strcpy char a[20]; strcpy(a,"primer"); printf("%s\n",a); // Izpiše: Primer

strcmp char a[20]; strcpy(a,"primer"); printf("%d\n",strcmp(a,"ime")); // Izpise: -1 - p za i printf("%d\n",strcmp("ime",a)); // Izpise: 1 - i pred p printf("%d\n",strcmp(a,a)); // Izpise: 0 - niza sta enaka printf("%s\n",a); strcat char a[20]; char b[20]=" za nize."; strcpy(a,"primer"); printf("%s\n",a); printf("%s\n",b); printf("%s\n",strcat(a,b)); printf("%s\n",a); // Izpise: Primer // Izpise: za nize. // Izpise: Primer za nize. // Izpise: Primer za nize. Pretvorba niza v število (atoi in atof) int n; float m; char str[20] = "12345.67"; n = atoi(str); m = atof(str); printf("string = %s int = %d in float = %0.2f\n", str, n,m);

Pretvorba iz števila v niz (itoa, fcvt) int number = 12345; char string[25]; itoa(number, string, 10); printf("int = %d string = %s\n", number, string); char str[25]; double num; int dec, sign, ndig = 5; /* realno stevilo */ num = 9.876; strcpy(str,fcvt(num, ndig, &dec, &sign)); printf("string = %s decimalna mesta = %d predznak = %d\n", str, dec, sign); /* izpis: string = 987600 decimalna mesta = 1 predznak = 0 */ /* negativno realno stevilo */ num = -123.45; strcpy(str, fcvt(num, ndig, &dec, &sign)); printf("string = %s decimalna mesta = %d predznak = %d\n", str, dec, sign); /* izpis: string = 12345000 decimalna mesta = 3 predznak = 1 */ /* realno stevilo zapisano na znanstveni nacin */ num = 0.678e5; strcpy(str, fcvt(num, ndig, &dec, &sign)); printf("string = %s decimalna mesta = %d predznak = %d\n", str, dec, sign); /* izpis: string = 6780000000 decimalna mesta = 5 predznak = 0 */ Uporaba sprintf za raznorazne pretvorbe. Namesto, da se rezultat izpiše na zaslon, se rezultat izpiše v spremenljivko. float stevilo = 6.5126; char str[256]; sprintf(str, "%0.4f", stevilo); printf("%s\n",str); // izpise nam 6.5126

Podprogrami in nizi void beri(char *niz) fgets(niz,256,stdin); // zamenjamo skok v novo vrstico z 0 znakom if (niz[strlen(niz)-1] == '\n') niz[strlen(niz)-1] = '\0'; void izpis(const char *niz) printf("%s",niz); char s[256]; beri(s); izpis(s); int i; int t[26]; void nastavi(int *t) for (i=0;i<26;i++) t[i]=0; void izpis(int *t) for (i=0;i<26;i++) if (t[i] > 0) printf("%c - %d\n",i+65, t[i]); void kaj(int *t, const char *x) for (i=0; i < strlen(x); i++) t[x[i]-65]=t[x[i]-65]+1; nastavi(t); kaj(t,"plavalka"); izpis(t); nastavi(t); kaj(t,"trst"); izpis(t);

Nizi v tabeli Prikaz kako znotraj glavnega programa shranimo niz v tabelo. char p[5][200]; int i; for (i=0;i<5;i++) fgets(p[i],200,stdin); printf("vnesel si naslednje nize:\n"); for (i=0;i<5;i++) printf("%d.niz: %s\n",i,p[i]); Prikaz kako v podprogram vnesemo nize iz tabele void beri(char *niz) fgets(niz,256,stdin); if (niz[strlen(niz)-1] == '\n') niz[strlen(niz)-1] = '\0'; void izpis(const char *niz) printf("%s",niz); char s[5][256]; int i; for (i=0;i<3;i++) beri(s[i]); izpis(s[i]);

Naloge Izdelaj podprogram, ki izpiše dolžino niza (brez uporabe funkcije strlen). Primer glave int length(const char* niz); Izdelaj podprogram, ki bo vrnil podniz od določene pozicije za določeno število znakov. Primer glave void strsub(const char *src,int pos, int length, char *dest); Izdelaj podprogram, ki nam pretvori celo število v niz potrebno je tudi paziti na dolžino števila! Primer glave void inttostr(int a,char *dest,int n); Izdelaj podprogram, ki nam pretvori niz v celo število, pri čemer je potrebno preverjati ali je število ustrezno (nima prepovedanih črk). Če slučajno naletimo na črko, podprogram vrne pozicijo črke, ter pretvorjeno število. Primer glave int strtoint(const char *src,int *err); Izdelaj podprogram, ki vrne prvih n znakov (zadnje znake odreže) iz določenega niza. Primer glave void trim(const char *src, char *dest, int n); Izdelaj podprogram, ki vse določene znake zamenja z drugim (primer vse 'e' zamenjaj z 'E'). Primer glave void replace_char(char *src, char in, char out); Izdelaj podprogram, ki vse določene znake izbriše iz niza (primer vse 'e' izbriše iz niza). Primer glave void delete_char(char *src, char in); Izdelaj podprogram, ki iz določene pozicije izbriše določeno število znakov (Iz besede "Primer" želimo izbrisati od vključno 3 znaka 'i', nadalnje 3 znake "ime"). Primer glave void delete(char *src, int poz, int len); Izdelaj podprogram, ki na določeno mesto vrine črko. Primer glave void insert_char(char *dest, int i, char c); Izdelaj podprogram, ki na določeno mesto vrine nov niz. Primer glave void insert(char *dest, const char *src; int i);