7. előadás (2005. április 12.) Láncolt lista File kezelés 1.

Slides:



Advertisements
Hasonló előadás
C# nyelvi áttekintő A „Programozás C# nyelven (Illés Zoltán)”
Advertisements

Sor láncolt ábrázolással
LEgyméretű tömbök, vektorok Alkalmazott Informatikai Tanszék SZÁMÍTÁSTECHNIKA I. dr.Dudás László 17./0. lVektorok definiálása lVektorok definiálása kezdőértékekkel.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
9. előadás (2005. április 26.) Parancssor argumentum kezelés példák (K&R) Fordítóprogramok A C előfordító 1.
8. előadás (2005. április 19.) Pozicionálás fájlban (folyt.) I/O mechanizmus váltás Hibakezelő függvények Változók tárolási osztályai Parancssor-argumentumok.
Budapesti Műszaki és Gazdaságtudományi Egyetem Elektronikus Eszközök Tanszéke A programozás alapjai 1. (VIEEA100) 9. előadás.
LINUX/UNIX PARANCSOK.
© Kozsik Tamás Beágyazott osztályok A blokkstrukturáltság támogatása –Eddig: egymásba ágyazható blokk utasítások Osztálydefiníciók is egymásba.
Dinamikus tömbök.
Csala Péter ANDN #4. 2 Tartalom  C# - ban előre definiált típusok  Változók  Változókkal műveletek  Elágazás  Ciklus.
Sztringek.
Bevezetés a Java programozásba
Bevezetés a Java programozásba
10. előadás (2004. április 20.) A C előfordító (folytatás) Néhány hasznos compiler opció Egy tanulságos könyvtári függvény Változó hosszúságú argumentum.
11. előadás (2005. május 10.) A make segédprogram Alacsony szintű műveletek és bitmezők Fájl, katalógus rendszer hívások 1.
1 Programozás alapjai GEIAL312B (ANSI C) BSc (Bachelor of Science) / Alap képzés 2005/2006. őszi félév Miskolci Egyetem Általános Informatikai Tanszék.
6. előadás (2005. április 5.) Struktúrák Úniók Új adattípus definíálása Dinamikus memória foglalás 1.
5. előadás (2005. március 22.) Függvények definíciója, deklarációja, hívása Enumerációs adattípus 1.
4. előadás (2005. március 8.) Pointerek Pointer aritmetika
Fájlkezelés, IO Kivételkezelés Belső osztályok
2. Gyakorlat Követelmények / „C” ismétlés
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás II. 9. Gyakorlat Alap file műveletek.
Programozás II. 3. Gyakorlat C++ alapok.
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás II. 6. Gyakorlat const, static, dinamikus 2D.
Függvények, mutatók Csernoch Mária.
Mutatók, tömbök, függvények
Borland C/C++ mintapéldák fájlokra. 1. példa Írjon olyan programot,amely megnyit egy hw.txt fájlt és írja bele a Hello világ szöveget. Ez után zárja le.
Borland C/C++ mintapéldák struktúrákra. 1. példa /* Egyszerû példa a struktúrák használatára */ #include #define SIZE 5 struct szemely { char nev[26];
Miskolci Egyetem Informatikai Intézet Általános Informatikai Tanszé k Pance Miklós Adatstruktúrák, algoritmusok előadásvázlat Miskolc, 2004 Technikai közreműködő:
C++ Alapok, első óra Elemi típusok Vezérlési szerkezetek
C++ alapok, harmadik óra
Programozás I. Adatállományok dr Póder Margit f. docens Rendszer és Szoftvertechnológia Tanszék.
Kivételkezelés.
WEB Technológiák WEB-DB és XML ME Általános Informatikai Tsz. dr. Kovács László.
Operációs rendszerek gyakorlat 9. Gyakorlat Vakulya Gergely.
PHP III. Fájlok, űrlapok.
Programozási nyelvek összehasonlító elemzése
J.Zs.Cs.: Vizuális programozás (c) 2010 Vizuális programozás Fájl- és állományrendszer kezelés Névtér: System.IO.
Rendezések és szövegkezelő függvények
Fájlkezelés Pascalban
Készítette: Csíki Gyula
Input – output, adatfolyamok
Visual Basic 2008 Express Edition
Java programozási nyelv Filekezelés
Java programozási nyelv Metódusok
Web fejlesztés V. Illés Zoltán ELTE Informatikai Kar
Egyenesvonalú (lineáris) adatszerkezetek
Objektum orientált programozás
Adatbázisok tervezése, megvalósítása és menedzselése
File- típus-konstrukciók Szlávi Péter ELTE Informatika Szakmódszertani Csoport
Függvények a C nyelvben 1 Függvényeket a következő esetekben szokás írni: Ha ugyanazt a tevékenységet többször is el kell végeznünk ugyanolyan típusú,
C Programozási alapok.
CUDA C/C++ programozás CUDA C bevezetés A segédanyag készítése a TÁMOP A/ Nemzeti Kiválóság Program című kiemelt projekt keretében.
Egy lekérdezés végrehajtása SELECT o1 FROM T1 WHERE o2 = … Hogyan jutnak el a megfelelő sorokból a mező értékei a klienshez?
Excel programozás (makró)
Fájlszervezés Adatbázisok tervezése, megvalósítása és menedzselése.
Objektum orientált programozás 4. Mutatók, típusok és struktúrák Nagy Szilvia.
Fájlkezelés Programozási tételek
Függvények, mutatók Csernoch Mária. Függvények függvény definíciója az értelmezési tartomány tetszőleges eleméhez hozzárendel egy értéket –függvény helyettesítési.
Informatikai gyakorlatok 11. évfolyam
a programegységek között
Excel programozás (makró)
A CLIPS keretrendszer
Változók.
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
Könyvtári függvények I. Input / output kezelés függvényei
Bináris fájlok kezelése
Függvénysablonok használata
Cache példák 2019 (IMSC).
Előadás másolata:

7. előadás (2005. április 12.) Láncolt lista File kezelés 1

Láncolt lista 1. Típus definíció: typedef struct elem { char nev[30]; struct elem *kovet; } ELEM; Műveletek: –elem memória foglalása, –elem hozzáfűzése a lánc végéhez, –elem beszúrása egy adott elem után, –elem törlése címe alapján, –elem keresése név szerint. 2

Láncolt lista 2. Elem memória foglalása: ELEM * ujelem() { ELEM *p; if ((p=(ELEM *) malloc(sizeof(ELEM))) == (ELEM *) NULL) { perror("uj elem"); exit(MEMHIBA); } p -> kovet=(ELEM *) NULL; return p; } 3

Láncolt lista 3. Elem hozzáfűzése a lánc végéhez: static ELEM * fej = (ELEM *)NULL; void hozzaad(ELEM *ujelem) {ELEM *p; if (fej == NULL) { fej=ujelem; return; } for (p=fej;p->kovet!=(ELEM *)NULL;p=p->kovet); p->kovet=ujelem; } 4

Láncolt lista 4. Elem beszúrása egy adott elem után: void beszur(ELEM *hova,ELEM *ujelem) { if(hova==(ELEM *)NULL || hova==ujelem || ujelem==(ELEM *)NULL || hova->kovet==ujelem) { printf("\n hibas parameter");return; } ujelem->kovet = hova->kovet; hova->kovet = ujelem; } 5

Láncolt lista 5. Elem törlése címe alapján: void torol(ELEM *torelem) { ELEM *p; if (fej==torelem) fej=torelem->kovet; else { for(p=fej; (p!=(ELEM *)NULL)&&(p->kovet!=torelem); p=p->kovet); 6

Láncolt lista 6. if (p==(ELEM *)NULL) { printf("nincs meg a torlendo elem"); return; } p->kovet = p->kovet->kovet; } free (torelem); } 7

Láncolt lista 7. Elem keresése név szerint: ELEM *keres(char *kernev) { ELEM *p; for (p=fej; p!=(ELEM *)NULL; p=p->kovet) if (strcmp(p->nev,kernev)==0) return p; return (ELEM *)NULL; } Gyakorlásként: rekurzív megfogalmazás, kétszeresen láncolt lista (előző, követő elem). 8

File kezelés A C nyelvben a file byte-ok sorozata: stream. A programozónak kell a tartalmát értelmeznie. Kivétel: a text típusú file '\n' karakter operációs rendszer függő kezelését elrejti előlünk. Buffer: az I/O felgyorsítására használt átmeneti munkaterület. Intelligens vezérlő: a CPU-val párhuzamosan képes a tényleges fizikai I/O műveleteket elvégezni. A buffer mérete alkalmazkodik a fizikai tároló egységhez (disk block). 9

Bufferelési típusok Nincs bufferelés: szinkron olvasás/írás lassú fájlok esetén. Soros aszinkron vonalak kezelése, adatgyűjtő eszközök, egér. Sorbufferelés: a rendszer a karakteres munkaterületet újsor karakter érzékelésénél adja át (terminálok). Blokk bufferelés: a rendszer mindaddig a munkaterületen dolgozik, amíg az be nem telik. A diszk fájlok blokk buffereltek. A szabványos be/kimenetek sor és blokk buffereltek is lehetnek (implementáció függő). 10

File megnyitása 1. FILE előre definiált típusú struktúra: Előre definiált FILE* változók: stdin, stdout, stderr. Megnyitás: FILE* fopen(char* filenev, char* mod); Visszatérő érték: érvényes FILE pointer a fájl azonosítására a későbbi műveletekhez, vagy NULL pointer, ha nem sikerült a megnyitás. filenev : a fájl operációs rendszerbeli azonosítója. 11

File megnyitása 2. A mod értéke 1, 2 vagy 3 karakter: r:csak olvasás (létező fájl) w:csak írás a:csak hozzáírás r+:olvasás+írás (létező fájl) w+:olvasás+írás a+:olvasás+hozzáírás A harmadik karakter: b:bináris, a struktúra mérete határozza meg az átviendő bájtok számát t:text (szöveges), újsor karakterrel határolt részek átvitele 12

File lezárása int fclose(FILE *filepointer); A visszatérő érték: 0ha sikeres volt EOFha nem sikerült 13

Fájl nyitás: példa FILE * inpf;.... if ((inpf = fopen(" ", "rt"))==NULL) { fprintf (stderr,"File nyitási hiba...\n"); exit(1); } else { /* A file feldolgozása*/ } 14

Szöveges file írása, olvasása int fprintf(FILE *f, char *s,...); int fscanf(FILE *f, char *s,...); int getc(FILE *f); /* hiba EOF*/ int putc(int c, FILE *f); /* kiirt kar., hiba EOF*/ int fputs(char *s, FILE *f); /* '\0' nélkül, utoljára kiirt kar., hiba\ EOF*/ char * fgets(char *s, int n, FILE *f); /* sorvége jelig max n-1, '\0'-t beteszi,\ hiba NULL*/ A getc, putc makró bináris fájlnál is használható. 15

Bináris file írása, olvasása size_t fread(void *p,int meret,int n, FILE *f); n darab meret méretű adatot olvas be és elhelyezi a p címtől kezdődően. Visszatérési érték: a beolvasott adatok száma, hiba vagy EOF esetén ez n -től kisebb. size_t fwrite(void *p,int meret,int n, FILE *f); 16

Pozícionálás fájlban 1. Minden fájlhoz tartozik egy bájtokban számított aktuális pozíció. Értéke megnyitáskor: 0. Az I/O műveletek automatikusan állítják. Állítása programból: long fseek (FILE *f,long eltolas,int bazis); Előjelesen hozzáadja a bazis -hoz az eltolas értékét és ez lesz az új pozíció. bazis előredefiníált értékei: SEEK_SET :a file eleje SEEK_CUR :az aktuális pozíció SEEK_END :a file vége Visszatérő érték: 0, ha sikeres, nem 0 egyébként. 17

Pozícionálás fájlban 2. Az aktuális file pozíció lekérdezése: long ftell (FILE *f); Visszatérő érték: a fájl elejétől számított pozíció, vagy sikertelenség esetén -1. A fájl elejére állás: void rewind (FILE *f); A buffer kiürítése: int fflush (FILE *f); /*0 vagy EOF*/ A file pozíció állítása a buffer kiírását is jelenti, ha az nem a bufferen belül van. 18