A C programozási nyelv VI. Parancssori argumentumok File kezelés

Hasonló dokumentumok
A C programozási nyelv VI. Parancssori argumentumok File kezelés

Programozás 6. Dr. Iványi Péter

A C programozási nyelv I. Bevezetés

A C programozási nyelv I. Bevezetés

A C programozási nyelv V. Struktúra Dinamikus memóriakezelés

Miről lesz ma szó? A PROGAMOZÁS ALAPJAI 1. Dinamikus változók. Dinamikus változók. Dinamikus változók. Dinamikus változók. 7.

A C programozási nyelv II. Utasítások. A függvény.

Kivételkezelés a C++ nyelvben Bevezetés

Függvény pointer. Feladat: Egy tömbben soroljunk fel függvényeket, és hívjuk meg valahányszor.

A C programozási nyelv III. Pointerek és tömbök.

7. gyakorlat Sorozatok, Fájlkezelés

A C programozási nyelv III. Pointerek és tömbök.

Programozás I. 5. Előadás: Függvények

C programozás. 6 óra Függvények, függvényszerű makrók, globális és

Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós május 6. Széchenyi István Egyetem, Gy r

Mérnöki programozás 7. Szerkesztette: dr. Vass Péter Tamás

Szövegek C++ -ban, a string osztály

1. Alapok. Programozás II

Programozás alapjai 6. előadás. Wagner György Általános Informatikai Tanszék

7. gyakorlat. Fájlkezelés IO haladó Függvények haladó

Programozás alapjai C nyelv 8. gyakorlat. Mutatók és címek (ism.) Indirekció (ism)

Mutatók és címek (ism.) Programozás alapjai C nyelv 8. gyakorlat. Indirekció (ism) Néhány dolog érthetőbb (ism.) Változók a memóriában

SQL*Plus. Felhasználók: SYS: rendszergazda SCOTT: demonstrációs adatbázis, táblái: EMP (dolgozó), DEPT (osztály) "közönséges" felhasználók

Bevezetés a programozásba I 10. gyakorlat. C++: alprogramok deklarációja és paraméterátadása

Járműfedélzeti rendszerek II. 3. előadás Dr. Bécsi Tamás

Programozás C nyelven FELÜLNÉZETBŐL elhullatott MORZSÁK. Sapientia EMTE

Adatbázisrendszerek I. File-szintű adattárolás C-ben. 1. gyakorlat

A C programozási nyelv IV. Deklaráció és definíció

Adatbázisrendszerek I. Fájlszintű adattárolás C-ben

Programozás II. 2. Dr. Iványi Péter

12. gyakorlat Enum; Tárolási osztályok Preprocesszor utasítások; Moduláris programozás

Programozás alapjai. 10. előadás

Elemi alkalmazások fejlesztése I. Olvassunk be egy fájlból egész számokat egy tömbbe. Keressük meg a tömb valamely

Programozás C nyelven (13. ELŐADÁS) Sapientia EMTE

Java II. I A Java programozási nyelv alapelemei

Programozás C++ -ban

C++ programozási nyelv Struktúrák a C++ nyelvben Gyakorlat

Java II. I A Java programozási nyelv alapelemei

Bevezetés a C programozási nyelvbe. Az Általános Informatikai Tanszék C nyelvi kódolási szabványa

8. gyakorlat Pointerek, dinamikus memóriakezelés

Bevezetés a programozásba I.

A függvény kód szekvenciáját kapcsos zárójelek közt definiáljuk, a { } -ek közti részt a Bash héj kód blokknak (code block) nevezi.

Programozás C- és Matlab nyelven C programozás kurzus BMEKOKAM603 Függvények. Dr. Bécsi Tamás 6. Előadás

Preprocesszor. Programozás alapjai C nyelv 11. gyakorlat. Makrók (2) Makrók (#define) Makrók (3) #include

Programozás alapjai C nyelv 11. gyakorlat. Preprocesszor. Makrók (#define)

HORVÁTH ZSÓFIA 1. Beadandó feladat (HOZSAAI.ELTE) ápr 7. 8-as csoport

Programozás alapjai C nyelv 5. gyakorlat. Írjunk ki fordítva! Írjunk ki fordítva! (3)

Statikus adattagok. Statikus adattag inicializálása. Speciális adattagok és tagfüggvények. Általános Informatikai Tanszék

Programozási nyelvek Java

Bevezetés a programozásba I.

Programozás C++ -ban 2007/1

ELTE SAP Excellence Center Oktatóanyag 1

1. Template (sablon) 1.1. Függvénysablon Függvénysablon példányosítás Osztálysablon

Programozás C és C++ -ban

Országzászlók (2015. május 27., Sz14)

Programozás I gyakorlat

Az Összegfokozatos listázás téma 2. gyakorlata

OOP #14 (referencia-elv)

7. Laboratóriumi gyakorlat: Vezérlési szerkezetek II.

7. fejezet: Mutatók és tömbök

Függvények. Programozás I. Hatwágner F. Miklós november 16. Széchenyi István Egyetem, Gy r

Programozás alapjai gyakorlat. 4. gyakorlat Konstansok, tömbök, stringek

Programozási nyelvek Java

Programozás II. Fájlkezelés

A C++ szigorúbban kezeli a típuseltéréseket, mint a C nyelv Lehetséges típuskonverziók:

Kivételek, kivételkezelés a C++ nyelvben

Láncolt lista. az itt adott nevet csak a struct deklaráción belül használjuk

Stack Vezérlés szerkezet Adat 2.

Mintavételes szabályozás mikrovezérlő segítségével

Bevezetés Kiíratás Beolvasás Formázás Fájlkezelés Gyakorló feladatok C++ I/O. Bevezetés. Izsó Tamás február 20. Izsó Tamás C++ I/O / 1

file./script.sh > Bourne-Again shell script text executable << tartalmat néz >>

BME MOGI Gépészeti informatika 8.

Példák tematikus csoportosításban

Programozás alapjai. (GKxB_INTM023) Dr. Hatwágner F. Miklós augusztus 29. Széchenyi István Egyetem, Gy r

Programozás C és C++ -ban

Programozás alapjai gyakorlat. 2. gyakorlat C alapok

A C++ nyelvben a függvény nevek túlterhelésével biztonságosabbá tehetnénk az adatok kiírását és beolvasását.

2018, Funkcionális programozás

Írjon olyan programot a standard könyvtár alkalmazásával, amely konzolról megadott valós adatokból meghatározza és kiírja a minimális értékűt!

Operációs rendszerek. 9. gyakorlat. Reguláris kifejezések - alapok, BASH UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

S z á m í t ó g é p e s a l a p i s m e r e t e k

Programozás alapjai 1. (BMEVIEEA100)

Programozás alapjai 9.Gy: Struktúra 2.

Szkriptnyelvek. 1. UNIX shell

Jelszavak helyes megválasztása, szótáras törés. Pánczél Zoltán

OOP I. Egyszerő algoritmusok és leírásuk. Készítette: Dr. Kotsis Domokos

INFORMATIKA javítókulcs 2016

11. gyakorlat Sturktúrák használata. 1. Definiáljon dátum típust. Olvasson be két dátumot, és határozza meg melyik a régebbi.

A programozás alapjai

Programozás alapjai C nyelv 9. gyakorlat. Rekurzió. Rekurzív algoritmus

Rekurzió. Programozás alapjai C nyelv 9. gyakorlat. Rekurzív algoritmus. Rekurzív algoritmus fajtái. Példa: n! (2) Példa: n!

Pénzügyi algoritmusok

Dinamikus memóriakezelés Fájlkezelés

Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós március 3. Széchenyi István Egyetem, Gy r

Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós február 18. Széchenyi István Egyetem, Gy r

Objektumorientált programozás Pál László. Sapientia EMTE, Csíkszereda, 2014/2015

C memóriakezelés. Mutató típusú változót egy típus és a változó neve elé írt csillag karakterrel hozhatjuk létre.

C programozási nyelv

Cekla. Készítette Doxygen Tue Sep :13:44

Az osztályok csomagokba vannak rendezve, minden csomag tetszőleges. Könyvtárhierarhiát fed: Pl.: java/util/scanner.java

Átírás:

A C programozási nyelv VI. Parancssori argumentumok File kezelés Miskolci Egyetem Általános Informatikai Tanszék A C programozási nyelv VI. (Parancssori argumentum, file kezelés) CBEV6 / 1 Parancssori argumentumok 1. A programot parancssorból indítva adatokat adhatunk meg számára. Amain függvény prototípusának teljes alakja int main(int argc, char* argv[], char* env[]) Amain függvény visszatérési értékét az aktivizáló program kapja meg. 0 visszaadott érték: sikeres végrehajtás A visszatérési értéket a main függvény return utasítása, vagy bárhol az exit függvény állíthatja be. A C programozási nyelv VI. (Parancssori argumentum, file kezelés CBEV56/ 2 Parancssori argumentumok 2. Azexit függvényhez az stdlib.h vagy process.h fejlécfile szükséges. Prototípusa: void exit(int status) Amain függvény elsÿ két paramétere a program aktivizálásához használt parancssorban található paramétereket adja vissza A C programozási nyelv VI. (Parancssori argumentum, file kezelés CBEV56/ 3 CBEV/ 1

Parancssori argumentumok 3. argc a paraméterek száma + 1 argv[0] a parancssorban a prompt után gépelt elsÿ stringre (a program neve, esetleg elérési úttal) mutató pointer argv[1] az elsÿ paraméterre mutató pointer.. argv[argc-1] az utolsó paraméterre mutató pointer argv[argc] a NULL mutató A C programozási nyelv VI. (Parancssori argumentum, file kezelés CBEV56/ 4 Parancssori argumentumok 4. Hasonlóan az env[0], env[1],..., env[n-1] a program hívásakor érvényes környezeti változókat tartalmazzák, (ahol n a környezeti változók száma), env[n]=null. A környezeti változók operációs rendszer függÿk! A parancssor paramétereit helyköz választja el. Ha egy paraméterben helyköz lenne, azt idézÿjelek közé kell írni. (A program az idézÿjelet nem kapja meg!) A C programozási nyelv VI. (Parancssori argumentum, file kezelés CBEV56/ 5 File a C nyelvben A C byte-ok sorozataként tekinti a file-okat. A programozó feladata a file tartalmát értelmezni. Kivétel: ha a file-t text típusúnak deklaráljuk '\n' ("sorvég") karakter kiírása az operációs rendszertÿl függÿ sor vége jelet generál sor vége jel beolvasása a '\n' karaktert eredményezi A C programozási nyelv VI. (Parancssori argumentum, file kezelés CBEV56/ 6 CBEV/ 2

File megnyitása Minden file-t egy FILE (elÿredefiniált) típusú struktúra azonosít. Van három elÿre definiált FILE* változó: stdin : standard input stdout: standard output stderr: standard hibacsatorna Minden file-t a használata elÿtt meg kell nyitni. Ezzel kapunk egy egyedi azonosítót, amellyel a késÿbbiekben hivatkozunk rá. (fopen függvény) A C programozási nyelv VI. (Parancssori argumentum, file kezelés CBEV56/ 7 Az fopen függvény 1. Prototípusa: FILE* fopen(char* filenev, char* mod) filenév paraméter a file neve (az adott operációs rendszer szabályai szerint) mod egy, két vagy három karakteres string, amely meghatározza a file használatának a módját, az alábbiak szerint: A C programozási nyelv VI. (Parancssori argumentum, file kezelés CBEV56/ 8 Az fopen függvény 2. Mód Használat módja Amegnevezett file-lal való kapcsolat jele r Csak olvasásra Léteznie kell! w Csak írásra Ha létezik, elÿzÿ tartalma elvész, ha nemlétezik, létrejön egy új (üres) file. a Hozzáírás Halétezik,azírásazelÿzÿ tartalomvégétól kezdÿdik. Ha nemlétezik, létrejön egyúj file. r+ Olvasás és írás Léteznie kell! w+ Olvasás és írás Ha létezik, elÿzÿ tartalma elvész, ha nemlétezik, létrejön egy új (üres) file. a+ Olvasás és hozzáírás Ha létezik, az írás az elÿzÿ tartalomvégétÿl kezdÿdik. Ha nemlétezik, létrejön egyúj file. A C programozási nyelv VI. (Parancssori argumentum, file kezelés CBEV56/ 9 CBEV/ 3

Az fopen függvény 3. A függvény visszatérési értéke a file leíró struktúrára mutató pointer, ha a megnyitás sikeres, a NULL pointer egyébként. Szokásos használata: FILE* be;... if ((be=fopen("bemeno.txt","rt"))==null) { fprintf (stderr,"nyitási hiba!\n"); exit(1); /* A program befejezése */ } else { /* A file feldolgozása */ } A C programozási nyelv VI. (Parancssori argumentum, file kezelés CBEV56/ 10 A file lezárása 1. Minden file-t a használata után le kell zárni. Erre szolgál az int fclose(file* f) paramétere a lezárandó file leírója visszatérési értéke 0 sikeres lezárásnál, EOF egyébként A C programozási nyelv VI. (Parancssori argumentum, file kezelés CBEV56/ 11 A file lezárása 2. Megjegyzések: A file lezárása után az azonosítására használt változó újra felhasználható. Afÿprogram (main függvény) végén minden nyitott file automatikusan lezáródik, mielÿtt a program befejezi a futását. A file lezárása elÿtt a nem üres buffer is kiíródik a file-ba. Ha a program futása rendellenesen áll le, adatok veszhetnek el. A C programozási nyelv VI. (Parancssori argumentum, file kezelés CBEV56/ 12 CBEV/ 4

File írása és olvasása 1. int fprintf(file* f, char*s,... ) Mintaprintf,csak az f file-ba ír ki. int fscanf(file* f, char*s,... ) Mintascanf,csak az f file-ból olvas. int getc(file* f) Mintagetchar, csakazf file-ból olvas. int putc(char c, FILE* f) Kiírja a c karaktert az f file-ba. Visszatérési értéke a kiírt karakter, hiba esetén EOF. A C programozási nyelv VI. (Parancssori argumentum, file kezelés CBEV56/ 13 File írása és olvasása 2. int fputs(char*s, FILE* f) Kiírja az s stringet, a záró nulla nélkül. Visszatérés: az utoljára kiírt karakter, vagy EOF. char* fgets(char*s, int n, FILE* f) Beolvas az s stringbe a sorvége karakterig, de maximum n-1 karaktert. A string végére teszi a záró nulla karaktert. Visszatérési értéke a beolvasott stringre mutató pointer, vagy NULL. A C programozási nyelv VI. (Parancssori argumentum, file kezelés CBEV56/ 14 File írása és olvasása 3. int fread(void* p, int meret, int n, FILE* f) A függvény n db, meret méret adatot olvas be, és elhelyezi azokat a p címtÿl kezdÿdÿen. Aptetszÿleges objektumot megcímezhet. A programozó felelÿssége, hogy a memóriaterület elegendÿ hosszúságú-e a feltöltött memóriaterület értelmezhetÿ-e. Visszatérési értéke a beolvasott adatok száma. Hiba vagy file vége esetén ez n-tÿl kisebb. A C programozási nyelv VI. (Parancssori argumentum, file kezelés CBEV56/ 15 CBEV/ 5

File írása és olvasása 4. int fwrite(void*p, int meret, int n, FILE* f) Mintazfread, de kiír. A C programozási nyelv VI. (Parancssori argumentum, file kezelés CBEV56/ 16 Pozicionálás a file-ban 1. Minden file-hoz tartozik egy aktuális pozíció, amit byte-ban számítunk. Egy file megnyitása után az aktuális pozíció 0, azaz a file elejére mutat. A végrehajtott írási és olvasási m veletek az aktuális pozíciót is állítják, az átvitt byte-ok számának megfelelÿen. Az aktuális pozíciót a programból is állíthatjuk (a file tetszÿleges sorrendben feldolgozható) A C programozási nyelv VI. (Parancssori argumentum, file kezelés CBEV56/ 17 Pozicionálás a file-ban 2. int fseek(file* f, long offset, int bazis) Hozzáadja (elÿjelesen!) az offset értékét a bazis által meghatározott értékhez, és ez lesz az új aktuális pozíció. bazis lehetséges értékei (elÿredef. konstansok): SEEK_SET a file eleje SEEK_CUR az aktuális file pozíció SEEK_END a file vége Visszatérési értéke 0, hasikeres,nem0 egyébként. A C programozási nyelv VI. (Parancssori argumentum, file kezelés CBEV56/ 18 CBEV/ 6

Pozicionálás a file-ban 3. long ftell(file* f) Visszaadja az aktuális file pozíció értékét, a file elejétÿl számolva. Sikertelenség esetén a visszatérési érték -1. void rewind(file* f) A file elejére állítja a file pozíciót. A C programozási nyelv VI. (Parancssori argumentum, file kezelés CBEV56/ 19 CBEV/ 7