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

Hasonló dokumentumok
Pénzügyi algoritmusok

Bevezetés a programozásba I.

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

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

Programozási alapismeretek :: beadandó feladat. Felhasználói dokumentáció. Molnár Tamás MOTIABT.ELTE

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

Fejlett programozási nyelvek C++ Sablonok és adatfolyamok

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.

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

1. Alapok. Programozás II

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

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.

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

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

Szkriptnyelvek. 1. UNIX shell

Globális operátor overloading

Programozási nyelvek Java

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

Bevezetés a programozásba I.

7. gyakorlat Sorozatok, Fájlkezelés

Operációs rendszerek 1.

Bevezetés a programozásba. 8. Előadás: Függvények 2.

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

8. Gyakorlat. Rövid elméleti összefoglaló: Fájlkezelés

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

2018, Funkcionális programozás

BASH SCRIPT SHELL JEGYZETEK

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

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

Bevezetés a programozásba Előadás: Objektumszintű és osztályszintű elemek, hibakezelés

Programozás C++ -ban 2007/1

Programozás C++ -ban 2007/4

Informatika terméktervezőknek

Programozás I. 3. gyakorlat. Szegedi Tudományegyetem Természettudományi és Informatikai Kar

main int main(int argc, char* argv[]) { return 0; } main return 0; (int argc, char* argv[]) main int int int main main main

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

Programozási nyelvek I. 5. előadás (Gregorics Tibor anyagának felhasználásával)

Mit tudunk már? Programozás alapjai C nyelv 4. gyakorlat. Legnagyobb elem keresése. Feltételes operátor (?:) Legnagyobb elem keresése (3)

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

Alkalmazott modul: Programozás 2. előadás. Procedurális programozás: adatfolyamok, adatsorok kezelése

Programozás alapjai C nyelv 4. gyakorlat. Mit tudunk már? Feltételes operátor (?:) Típus fogalma char, int, float, double

Programozás C++ -ban

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

Bevezetés a programozásba II. 5. Előadás: Másoló konstruktor, túlterhelés, operátorok

Bevezetés a programozásba I.

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

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

Programozás I. gyakorlat

1. Alapok. #!/bin/bash

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

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

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

Programozás alapjai. 6. gyakorlat Futásidő, rekurzió, feladatmegoldás

Programozási nyelvek Java

C# nyelv alapjai. Krizsán Zoltán 1. Objektumorientált programozás C# alapokon tananyag. Általános Informatikai Tanszék Miskolci Egyetem

Operációs rendszerek. 11. gyakorlat. AWK - szintaxis, vezérlési szerkezetek UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

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

Python tanfolyam Python bevezető I. rész

Programozás C és C++ -ban

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

Bevezetés a programozásba I 7. gyakorlat. C++: szövegkezelés, szekvenciális fájlkezelés. Szövegkezelés Karakterkezelés

A C programozási nyelv I. Bevezetés

A C programozási nyelv I. Bevezetés

2018, Funkcionális programozás

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

Bevezetés a programozásba I 8. gyakorlat. C++: szövegfolyamok, intelligens tömbök. Adatfolyamok Hibalehetőségek

Felhasználói dokumentáció

Bevezetés a C++ programozásba

Bevezetés a programozásba I 8. gyakorlat. C++: szövegfolyamok, intelligens tömbök

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

Programozás C++ -ban 2007/7

Operációs rendszerek I. IIII. gyakorlat

Operációs Rendszerek II. labor. 2. alkalom

Programozási nyelvek II.: JAVA

Operációs rendszerek 2 1. óra: Linux alapok Ismétlés. Windisch Gergely félév

Flex tutorial. Dévai Gergely

Linux alapok. Parancsok általános alakja parancs kapcsolók paraméterek

500. CC Megoldó Alfréd CC 500.

STL gyakorlat C++ Izsó Tamás május 9. Izsó Tamás STL gyakorlat/ 1

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

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

Programozás I gyakorlat

Bevezetés a programozásba Előadás: A const

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

500. AA Megoldó Alfréd AA 500.

Programozás alapjai II. (9. ea) C++ többszörös öröklés, cast, perzisztencia

Listák, szótárak, fájlok Listák, szótárak, fájlok

Bevezetés az informatikába, második gyakorlat. Bevezetés Környezetváltozók és néhány egyszerű utasítás Jogosultságok Fájlkezelés

osztályok kapcsolata Származtatatás C++ Izsó Tamás március 19. Izsó Tamás Származtatatás/ 1

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

Algoritmusok Tervezése. 4. Előadás Visual Basic 1. Dr. Bécsi Tamás

PHP alapjai, bevezetés. Vincze Dávid Miskolci Egyetem, IIT

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

LINUX PMB LINUXOS PARANCSOK ÉS HASZNÁLATUK - GRUB

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

Felhasználó által definiált adattípus

AWK programozás, minták, vezérlési szerkezetek

Fejlett programozási nyelvek C++ Iterátorok

7. Laboratóriumi gyakorlat, 1. rész : Vezérlési szerkezetek II.

Bevezetés a programozásba. 6. Előadás: C++ bevezető

Átírás:

Programozás (GKxB_INTM021) Széchenyi István Egyetem, Gy r 2018. május 6.

Parancssori paraméterek Parancssorban történ programindításkor a program nevét követ en szóközökkel elválasztva paraméterek (command line arguments) adhatók meg, melyekkel a program m ködése befolyásolható. Könyvtár tartalmának listázása tömör formátum wajzy@wajzy-notebook:~/dokumentumok/gknb_intm021/el adások/ea13$ ls beolvas1.cpp ea13.log ea13.toc masol2 param2 param4.cpp beolvas2 ea13.nav guns.txt masol2.cpp param2.cpp beolvas2.cpp ea13.out kiir1 masolat.dat param2.o Könyvtár tartalmának listázása hosszú (long) formátum wajzy@wajzy-notebook:~/dokumentumok/gknb_intm021/el adások/ea13$ ls -l összesen 4851004 -rw-rw-r-- 1 wajzy wajzy 393 máj 5 12:13 beolvas1.cpp -rwxrwxr-x 1 wajzy wajzy 14613 máj 5 12:05 beolvas2 -rw-rw-r-- 1 wajzy wajzy 401 máj 5 12:13 beolvas2.cpp

Parancssori paraméterek Feladat: készítsünk programot, ami kilistázza saját paramétereit! Kimenet1 wajzy@wajzy-notebook:~/dokumentumok/gknb_intm021/el adások/ea13$./param1 egy ketto harom "szokozt tartalmaz" Az elinditott program neve:./param1 1. parameter: egy 2. parameter: ketto 3. parameter: harom 4. parameter: szokozt tartalmaz Kimenet2 wajzy@wajzy-notebook:~/dokumentumok/gknb_intm021/el adások/ea13$./param1 Az elinditott program neve:./param1 Nem adtak meg parametereket.

Parancssori paraméterek A main függvény paraméterei int main(int argc, char* argv[]) { /*... */ } int main(int argc, char** argv) { /*... */ } argc argv A paraméterek száma (argument count), beleszámolva az elindított programot is Paraméterek mutatótömbje (argument vector) 5 argc NULL argv "./param1" "egy" "ketto" "harom" "szokozt tartalmaz"

Parancssori paraméterek #i n c l u d e <i o s t r e a m > u s i n g namespace s t d ; i n t main ( i n t argc, c h a r a r g v [ ] ) { c o u t << "Az e l i n d i t o t t program neve : " << a r g v [ 0 ] << e n d l ; i f ( a r g c == 1) { c o u t << "Nem a d t a k meg p a r a m e t e r e k e t. \ n" ; } e l s e { f o r ( i n t i =1; i <a r g c ; i ++) { c o u t << i << ". p a r a m e t e r : " << a r g v [ i ] << e n d l ; } } r e t u r n 0 ; }

Parancssori paraméterek #i n c l u d e <i o s t r e a m > u s i n g namespace s t d ; i n t main ( i n t argc, c h a r a r g v ) { c o u t << "Az e l i n d i t o t t program neve : " << a r g v [ 0 ] << e n d l ; i f ( a r g c == 1) { c o u t << "Nem a d t a k meg p a r a m e t e r e k e t. \ n" ; } e l s e { f o r ( a r g v ++; a r g v!= NULL ; a r g v++) { c o u t << a r g v << e n d l ; } } r e t u r n 0 ; }

Parancssori paraméterek Feladat Két paraméterrel megadott, zárt intervallumba es véletlenszám el állítása Probléma A paraméterek típusa nem megfelel Megoldás1 A stringstream használata char* int konverzióhoz (rugalmasabb) Megoldás2 C függvény (atoi, ASCII to int) használata

Parancssori paraméterek 1 #i n c l u d e <i o s t r e a m > // c o u t 2 #i n c l u d e <c s t d l i b > // srand, rand 3 #i n c l u d e <ctime > // t i m e 4 #i n c l u d e <s s t r e a m > // s t r i n g s t r e a m 5 u s i n g namespace s t d ; 6 7 i n t main ( i n t argc, c h a r a r g v [ ] ) { 8 i f ( a r g c!= 3) { 9 c o u t << " H a s z n a l a t : " << a r g v [ 0 ] << " min max\n" ; 10 } e l s e { 11 s t r i n g s t r e a m s s ; 12 i n t min, max ; 13 s s << a r g v [ 1 ] << ' ' << a r g v [ 2 ] ; 14 s s >> min ; 15 s s >> max ;

Parancssori paraméterek 16 s r a n d ( t i m e (NULL ) ) ; 17 c o u t << "A [ " << min << ", " << max 18 << " ] i n t e r v a l l u m b a " 19 << " e s o v e l e t l e n szam : " 20 << min + rand ()%(max min+1) << e n d l ; 21 } 22 r e t u r n 0 ; 23 } Kimenet wajzy@wajzy-notebook:~/dokumentumok/gknb_intm021/el adások/ea13$./param3 1 5 A [1, 5] intervallumba eso veletlen szam: 4

Parancssori paraméterek #i n c l u d e <i o s t r e a m > // c o u t #i n c l u d e <c s t d l i b > // s rand, rand, a t o i #i n c l u d e <ctime > // t i m e u s i n g namespace s t d ; i n t main ( i n t argc, char a r g v [ ] ) { i f ( a r g c!= 3) { c o u t << " H a s z n a l a t : " << a r g v [ 0 ] << " min max\n" ; } e l s e { i n t min = a t o i ( a r g v [ 1 ] ) ; i n t max = a t o i ( a r g v [ 2 ] ) ; s r a n d ( t i m e (NULL ) ) ; c o u t << "A [ " << min << ", " << max << " ] i n t e r v a l l u m b a " << " e s o v e l e t l e n szam : " << min + r a n d ()%(max min+1) << e n d l ; } r e t u r n 0 ; }

Referenciák A referencia tekinthet új név társításának egy létez változóhoz, vagy olyan mutatónak, amelyen automatikusan végrehajtásra kerül az indirekció. 4 i n t main ( ) { 5 i n t d a r a b = 1 ; // v a l t o z o 6 i n t mutdarab = &d a r a b ; // mutato 7 i n t& r e f D a r a b = d a r a b ; // r e f e r e n c i a 8 // i n t& r e f D a r a b ; // Mi az e r e d e t i v a l t o z o cime? 9 // i n t& r e f D a r a b = 5 ; // Konstansnak n i n c s cime 10 c o u t << " d a r a b=" << d a r a b 11 << " r e f D a r a b=" << r e f D a r a b 12 << " mutdarab=" << mutdarab 13 << " mutdarab=" << mutdarab << e n d l ;

Referenciák 15 d a r a b ++; 16 r e f D a r a b ++; 17 c o u t << " d a r a b=" << d a r a b 18 << " r e f D a r a b=" << r e f D a r a b 19 << " mutdarab=" << mutdarab 20 << " mutdarab=" << mutdarab << e n d l ; 21 r e t u r n 0 ; 22 } Kimenet darab=1 refdarab=1 mutdarab=0x7ffe641fbc0c *mutdarab=1 darab=3 refdarab=3 mutdarab=0x7ffe641fbc0c *mutdarab=3

Referenciák Készíthet referenciát fogadó függvény is 4 v o i d n e g y z e t E r t e k ( i n t a l a p ) { 5 a l a p = a l a p a l a p ; 6 } 7 8 v o i d n e g y z e t M u t a t o ( i n t a l a p ) { 9 a l a p = a l a p a l a p ; 10 } 11 12 v o i d n e g y z e t R e f e r e n c i a ( i n t& a l a p ) { 13 a l a p = a l a p a l a p ; 14 }

Referenciák Készíthet referenciát fogadó függvény is 16 i n t main ( ) { 17 i n t szam = 2 ; 18 c o u t << " Kezdetben : szam=" << szam ; 19 n e g y z e t E r t e k ( szam ) ; 20 c o u t << ", n e g y z e t E r t e k ( ) utan : szam=" << szam ; 21 n e g y z e t M u t a t o (&szam ) ; 22 c o u t << "\ nnegyzetmutato ( ) utan : szam=" << szam ; 23 n e g y z e t R e f e r e n c i a ( szam ) ; 24 c o u t << ", n e g y z e t R e f e r e n c i a ( ) utan : szam=" 25 << szam << e n d l ; 26 // n e g y z e t R e f e r e n c i a ( 5 ) ; // Konstansnak n i n c s cime 27 r e t u r n 0 ; 28 } Kimenet Kezdetben: szam=2, negyzetertek() utan: szam=2 negyzetmutato() utan: szam=4, negyzetreferencia() utan: szam=16

Referenciák Referenciával visszatér fv. 4 i n t szam = 5 ; 5 6 i n t& v i s s z a ( i n t param ) { 7 // r e t u r n 1 ; // k o n s t a n s n a k n i n c s cime 8 i n t l o k a l i s ; 9 // r e t u r n l o k a l i s ; // f e l s z a b a d u l, m i r e h a s z n a l n a n k 10 // r e t u r n param ; // d e t t o 11 r e t u r n szam ; 12 } 13 14 i n t main ( ) { 15 i n t n = v i s s z a ( 4 2 ) 2 ; 16 cout << "n=" << n ; 17 v i s s z a ( 4 2 ) = 3 ; 18 v i s s z a (42)++; 19 c o u t << "\ nszam=" << szam ; 20 r e t u r n 0 ; 21 } Kimenet n=10 szam=4

Magas szint be- és kimenet Feladat Írjunk programot, ami a paraméterként adott szövegfájl tartalmát kiírja! Megoldás Magas B/K (high-level I/O) használata (operációs rendszert l független, hordozható megoldás, de csak a legfontosabb szolgáltatások érhet ek el) Fájlkezelés lépési: 1 (Megfelel típusú folyam) megnyitása 2 B/K m veletek elvégzése 3 Folyam (stream) lezárása A folyamok hasonlítanak a cin/cout pároshoz, de azok automatikusan nyílnak/zárulnak!

Magas szint be- és kimenet Beolvasás karakterenként #i n c l u d e <i o s t r e a m > #i n c l u d e <f s t r e a m > // i f s t r e a m u s i n g namespace s t d ; i n t main ( i n t argc, char a r g v [ ] ) { i f ( a r g c!= 2) { c o u t << " H a s z n a l a t : " << a r g v [ 0 ] << " f a j l n e v \n" ; } e l s e { i f s t r e a m f ( a r g v [ 1 ] ) ; i f ( f. is_open ( ) ) { char c ; w h i l e ( f. g e t ( c ),! f. e o f ( ) ) c o u t << c ; f. c l o s e ( ) ; } e l s e { c e r r << " F a j l n y i t a s i h i b a. \ n" ; } } r e t u r n 0 ; }

Magas szint be- és kimenet ifstream f(argv[1]); ifstream: bemeneti folyam típusa (osztály) f: a folyamváltozó neve argv[1]: a folyam forrása, ebb l fog olvasni f.is_open() Ellen rzi a megnyitás sikerességét (Létezik a fájl? Van jogunk olvasni?... ) (Az ifstream osztály tagfüggvénye) f.get(c) Beolvas egyetlen karaktert a c változóba (istream& get (char& c);) f.eof() Ellen rzi, hogy a fájl végének (end of file) elérését mutató jelz bit (ag) magas érték -e Csak az els túlolvasási kísérlet után lesz a bit magas érték! f.close() Folyam lezárása

Magas szint be- és kimenet Programunk kimenete wajzy@wajzy-notebook:~/dokumentumok/gknb_intm021/el adások/ea13$./beolvas1 guns.txt She's got a smile it seems to me Reminds me of childhood memories Where everything Was as fresh as the bright blue sky Now and then when I see her face cat (concatenate les and print) kimenete wajzy@wajzy-notebook:~/dokumentumok/gknb_intm021/el adások/ea13$ cat guns.txt She's got a smile it seems to me Reminds me of childhood memories Where everything Was as fresh as the bright blue sky Now and then when I see her face

Magas szint be- és kimenet Minden szó külön stringben 5 i n t main ( i n t argc, char a r g v [ ] ) { 6 i f ( a r g c!= 2) { 7 c o u t << " H a s z n a l a t : " << a r g v [ 0 ] 8 << " f a j l n e v \n" ; 9 } e l s e { 10 i f s t r e a m f ( a r g v [ 1 ] ) ; 11 i f ( f. is_open ( ) ) { 12 s t r i n g s ; 13 w h i l e ( f >> s,! f. e o f ( ) ) 14 c o u t << s << e n d l ; 15 f. c l o s e ( ) ; 16 } e l s e { 17 c e r r << " F a j l n y i t a s i h i b a. \ n" ; 18 } 19 } 20 r e t u r n 0 ; 21 } Kimenet She's got a smile it seems to me Reminds me of childhood memories Where everything Was as fresh as

Magas szint be- és kimenet Teljes sorok olvasása 5 i n t main ( i n t argc, c h a r a r g v [ ] ) { 6 i f ( a r g c!= 2) { 7 c o u t << " H a s z n a l a t : " << a r g v [ 0 ] << " f a j l n e v \n" ; 8 } e l s e { 9 i f s t r e a m f ( a r g v [ 1 ] ) ; 10 i f ( f. is_open ( ) ) { 11 s t r i n g s ; 12 w h i l e ( g e t l i n e ( f, s ),! f. e o f ( ) ) { 13 c o u t << s << e n d l ; 14 } 15 f. c l o s e ( ) ; 16 } e l s e { 17 c e r r << " F a j l n y i t a s i h i b a. \ n" ; 18 } 19 } 20 r e t u r n 0 ; 21 }

Magas szint be- és kimenet Sorok írása 1 #i n c l u d e <i o s t r e a m > 2 #i n c l u d e <f s t r e a m > // o f s t r e a m 3 u s i n g namespace s t d ; 4 5 i n t main ( i n t argc, c h a r a r g v [ ] ) { 6 i f ( a r g c!= 2) { 7 c o u t << " H a s z n a l a t : " << a r g v [ 0 ] << " f a j l n e v \n" ; 8 } e l s e { 9 o f s t r e a m f ( a r g v [ 1 ] ) ; // a l a p é r t e l m e z e s : f e l u l i r a s 10 i f ( f. is_open ( ) ) { // ( t r u n c a t e ) 11 s t r i n g d a l [ ] = { 12 " She ' s g o t a s m i l e i t seems t o me", 13 " Reminds me o f c h i l d h o o d memories ",

Magas szint be- és kimenet Sorok írása 18 "And i f I ' d s t a r e t o o l o n g ", 19 " I ' d p r o b a b l y b r e a k down and c r y " 20 } ; 21 f o r ( unsigned i =0; 22 i <s i z e o f ( d a l )/ s i z e o f ( d a l [ 0 ] ) ; 23 i ++) { 24 f << d a l [ i ] << e n d l ; 25 } 26 f. c l o s e ( ) ; 27 } e l s e { 28 c e r r << " F a j l n y i t a s i h i b a. \ n" ; 29 } 30 }

Magas szint be- és kimenet Másolás karakterenként 5 i n t main ( i n t argc, char a r g v [ ] ) { 6 i f ( a r g c!= 3) { 7 c o u t << " H a s z n a l a t : " << a r g v [ 0 ] 8 << " f o r r a s c e l \n" ; 9 } e l s e { 10 i f s t r e a m be ( a r g v [ 1 ] ) ; 11 i f ( be. is_open ( ) ) { 12 o f s t r e a m k i ( a r g v [ 2 ] ) ; 13 i f ( k i. is_open ( ) ) { 14 char c ; 15 w h i l e ( be. g e t ( c ),! be. e o f ( ) ) { 16 k i << c ; 17 }

Magas szint be- és kimenet Másolás karakterenként 18 k i. c l o s e ( ) ; 19 } e l s e { 20 c e r r << " M e g n y i t a s i h i b a : " 21 << a r g v [ 2 ] << e n d l ; 22 } 23 be. c l o s e ( ) ; 24 } e l s e { 25 c e r r << " M e g n y i t a s i h i b a : " 26 << a r g v [ 1 ] << e n d l ; 27 } 28 } 29 r e t u r n 0 ; 30 }

Magas szint be- és kimenet Másolás blokkonként 1 #i n c l u d e <i o s t r e a m > 2 #i n c l u d e <f s t r e a m > 3 u s i n g namespace s t d ; 4 #d e f i n e MERET 65536 5 6 i n t main ( i n t argc, c h a r a r g v [ ] ) { 7 i f ( a r g c!= 3) { 8 c o u t << " H a s z n a l a t : " << a r g v [ 0 ] 9 << " f o r r a s c e l \n" ; 10 } e l s e { 11 i f s t r e a m be ( a r g v [ 1 ], i o s : : b i n a r y ) ; 12 i f ( be. is_open ( ) ) { 13 o f s t r e a m k i ( a r g v [ 2 ], i o s : : b i n a r y ) ; 14 i f ( k i. is_open ( ) ) { 15 c h a r p u f f e r = new c h a r [MERET ] ; 16 i n t b e o l v a s v a ;

Magas szint be- és kimenet Másolás blokkonként 17 do { 18 be. r e a d ( p u f f e r, MERET ) ; 19 b e o l v a s v a = be. gcount ( ) ; 20 k i. w r i t e ( p u f f e r, b e o l v a s v a ) ; 21 } w h i l e ( b e o l v a s v a == MERET ) ; 22 d e l e t e [ ] p u f f e r ; 23 k i. c l o s e ( ) ; 24 } e l s e { 25 c e r r << " M e g n y i t a s i h i b a : " << a r g v [ 2 ] << e n d l ; 26 } 27 be. c l o s e ( ) ; 28 } e l s e { 29 c e r r << " M e g n y i t a s i h i b a : " << a r g v [ 1 ] << e n d l ; 30 } 31 } 32 r e t u r n 0 ; 33 }

Magas szint be- és kimenet Folyamok egy-egy felültöltött konstruktora explicit ifstream (const char* lename, ios_base::openmode mode = ios_base::in); explicit ofstream (const char* lename, ios_base::openmode mode = ios_base::out); Megnyitási mód konstansok: (kombinálhatók bitenkénti vagy operátorral, vagy összeadással) in (input) Megnyitás olvasásra out (output) Megnyitás írásra binary Bináris üzemmód (karakteres helyett = nincs transzláció) ate (at end, append) Hozzáf zés (fájlmutató a fájl végére mozdul) trunc (truncate) Meglév tartalom törlése

Magas szint be- és kimenet Másolás karakterenként time./masol1 nagyfajl.dat masolat.dat real 5m33.072s user 4m54.301s sys 0m19.405s Másolás blokkonként time./masol2 nagyfajl.dat masolat.dat real 0m53.501s user 0m0.212s sys 0m12.795s Másolás az OS segédprogramjával time cp nagyfajl.dat masolat.dat real 0m50.821s user 0m0.102s sys 0m12.247s