Klasa iostream... 1 Klasy ofstream, ifstream Struktura FILE... 8

Podobne dokumenty
Operacje na plikach. Informatyka. Standardowe strumienie wejścia i wyjścia

Programowanie w językach

Operacje wejścia/wyjścia (odsłona druga) - pliki

Operacje na plikach (niskiego poziomu) < IO.H >

Wejście wyjście strumieniowe

Program dopisujący gwiazdkę na końcu pliku tekstowego o nazwie podanej przez uŝytkownika oraz wypisujący zawartość tego pliku.

C++ - [3-5] Pliki i strumienie w C++

1 Pierwsze kroki w C++ cz.3 2 Obsługa plików

Wykład 2 Operacje wejściawyjścia. Ewa Gajda

Spis treści OBSŁUGA PLIKÓW W JĘZYKU C++ Informatyka 2. Instrukcja do pracowni specjalistycznej z przedmiotu. Numer ćwiczenia INF32

Funkcje zawarte w bibliotece < io.h >

Funkcje zawarte w bibliotece < io.h >

Wykład II. Programowanie II - semestr II Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej

Biblioteka standardowa - operacje wejścia/wyjścia

ISO/ANSI C dostęp do plików ISO/ANSI C. ISO/ANSI C dostęp do plików. ISO/ANSI C dostęp do plików. ISO/ANSI C dostęp do plików

Programowanie w językach wysokiego poziomu

Programowanie Procedurale. Pliki w języku C++

Wskaźniki do funkcji. Wykład 11. Podstawy programowania ( język C ) Wskaźniki do funkcji (1) Wskaźniki do funkcji (2)

Pliki. Informacje ogólne. Obsługa plików w języku C

Podstawy programowania. Wykład: 9. Łańcuchy znaków. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Ghost in the machine

ISO/ANSI C dostęp do plików ISO/ANSI C. ISO/ANSI C dostęp do plików. ISO/ANSI C dostęp do plików. ISO/ANSI C dostęp do plików

Pliki wykład 2 -przekazywanie strumieni do funkcji -funkcje get(char &) i getline(string)

Język C++ wykład VIII

Języki programowania. Przetwarzanie plików amorficznych Konwencja języka C. Część siódma. Autorzy Tomasz Xięski Roman Simiński

Programowanie i struktury danych

Programowanie Proceduralne

Pliki wykład. Dorota Pylak

4. Wyrzuć wyjątek jeśli zmienna ist nie istnieje bloki: try, catch i wyrzucanie wyjątku

Obsługa plików. Laboratorium Podstaw Informatyki. Kierunek Elektrotechnika. Laboratorium Podstaw Informatyki Strona 1. Kraków 2013

Techniki programowania INP001002Wl rok akademicki 2017/18 semestr letni. Wykład 5. Karol Tarnowski A-1 p.

Podstawy programowania w języku C++

Pliki wykład 2. Dorota Pylak

Pliki. Informacje ogólne. Obsługa plików w języku C

Programowanie w C++ Wykład 11. Katarzyna Grzelak. 21 maja K.Grzelak (Wykład 11) Programowanie w C++ 1 / 24

Pliki w C/C++ Przykłady na podstawie materiałów dr T. Jeleniewskiego

Pliki wykład. Dorota Pylak

Ćwiczenie 4. Obsługa plików. Laboratorium Podstaw Informatyki. Kierunek Elektrotechnika. Laboratorium Podstaw Informatyki Strona 1.

Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 5. Karol Tarnowski A-1 p.

Formatowane (tekstowe) wejście/wyjście. Binarne wejście/wyjście.

Plik jest reprezentowany przez strumień znaków (bajtów) o zmiennej długości. Koniec strumienia identyfikowany jest znacznikiem końca pliku EOF.

jest mocny, skoro da się w nim wyrazić nowe pojęcia; łatwiej przenieść go na nową platformę jest mniejszy.

Podstawy Programowania

Podstawy programowania w języku C++

INFORMATYKA Studia Niestacjonarne Elektrotechnika

Program wykonujący operację na plikach powinien zachować schemat działania zapewniający poprawną pracę:

Programowanie Obiektowe i C++

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 12. Karol Tarnowski A-1 p.

Programowanie proceduralne INP001210WL rok akademicki 2018/19 semestr letni. Wykład 6. Karol Tarnowski A-1 p.

Podstawy informatyki. Informatyka stosowana - studia niestacjonarne. Grzegorz Smyk. Wydział Inżynierii Metali i Informatyki Przemysłowej

1 Strumienie. 2 Pliki. 2.1 Zapis do pliku tekstowego. Programowanie w j zyku C - Adam Krechowicz, Daniel Kaczmarski

Języki i metodyka programowania. Typy, operatory, wyrażenia. Wejście i wyjście.

dr inż. Jarosław Forenc

Programowanie w C++ Wykład 9. Katarzyna Grzelak. 14 maja K.Grzelak (Wykład 9) Programowanie w C++ 1 / 30

Dla każdej operacji łącznie tworzenia danych i zapisu ich do pliku przeprowadzić pomiar czasu wykonania polecenia. Wyniki przedstawić w tabelce.

Referencje. Zasady zaliczeń. Zasady zaliczeń. Zasady zaliczeń. Zasady zaliczeń. Zaawansowane Programowanie Obiektowe. Informacje organizacyjne:

Programowanie w C++ Wykład 8. Katarzyna Grzelak. 15 kwietnia K.Grzelak (Wykład 8) Programowanie w C++ 1 / 33

Wykład VI. Programowanie. dr inż. Janusz Słupik. Gliwice, Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik

MATERIAŁY POMOCNICZE PODSTAWY PROGRAMOWANIA Na podstawie: Programowanie w C - Stworzone na Wikibooks, bibliotece wolny podręczników

Wykład :37 PP2_W9

Tablice w argumentach funkcji. Tablicy nie są przekazywane po wartości Tablicy są przekazywane przez referencje lub po wskaźniku

Politechnika Poznańska Wydział Budowy Maszyn i Zarządzania. Programowanie systemów informatycznych laboratorium. Ćw. 3: Akwizycja danych. RS 232 cd.

Zasady programowania Dokumentacja

W języku C każdy plik fizyczny jest ciągiem bajtów, z których każdy może być niezależnie odczytany. Borland 01234

DYNAMICZNE PRZYDZIELANIE PAMIECI

Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych.

Języki programowania. Karolina Mikulska-Rumińska Pokój 573, tel Konsultacje wtorek 9-10.

Laboratorium Systemów Operacyjnych. Ćwiczenie 4. Operacje na plikach

۰ Elementem jednostkowym takiego pliku jest bajt. ۰ Format pliku binarnego: [bajty pliku][eof]

Wprowadzenie do programowania i programowanie obiektowe

Obsługa plików. Systemy Operacyjne 2 laboratorium. Mateusz Hołenko. 25 września 2011

Strumienie i pliki. Programowanie Proceduralne 1

Wstęp do programowania obiektowego. Przekazywanie parametrów do funkcji w C++ Metody i funkcje operatorowe Strumienie: standardowe, plikowe, napisowe

PRZYKŁADY OPERACJI PLIKOWYCH z wykorzystaniem biblioteki <stdio.h>

Pliki. Funkcje tworzące pliki i operujące na nich opisane są w części 2 pomocy systemowej. Tworzenie i otwieranie plików:

Łącza nienazwane(potoki) Łącza nienazwane mogą być używane tylko pomiędzy procesami ze sobą powiązanymi.

C++ - strumienie. C++ - strumienie. C++ - strumienie. C++ - strumienie. C++ - strumienie STRUMIENIE

Operatory na rzecz typu TString

Zaawansowane programowanie w języku C++ Biblioteka standardowa

Wstęp do programowania. Dariusz Wardecki, wyk. X

ISO/ANSI C - funkcje. Funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje

C++ - strumienie. C++ - strumienie. C++ - strumienie. C++ - strumienie. C++ - strumienie STRUMIENIE

Operacje wejścia/wyjścia odsłona pierwsza

Wykład 9 Pliki cz.3 (getline(string)) Typ wyliczeniowy enum

Programowanie proceduralne INP001210WL rok akademicki 2015/16 semestr letni. Wykład 6. Karol Tarnowski A-1 p.

wer. 7 z drobnymi modyfikacjami Wojciech Myszka :48:

Laboratorium z systemów operacyjnych. System plików - funkcje systemowe. Anna Wojak

Ćwiczenie nr 6. Poprawne deklaracje takich zmiennych tekstowych mogą wyglądać tak:

C++ - szablony. C++ - szablony. C++ - szablony. C++ - szablony. C++ - szablony. C++ - szablony

Programowanie komputerowe. Zajęcia 5

// Potrzebne do memset oraz memcpy, czyli kopiowania bloków

Wykład nr 4. Temat: Dynamiczny przydział pamięci, zastosowania wskaźników, praca z plikami.

Laboratorium 1. Programowanie II - Kierunek Informatyka. dr inż. Janusz Słupik. Gliwice, Wydział Matematyki Stosowanej Politechniki Śląskiej

STL: Lekcja 1&2. Filozofia STL

public: // interfejs private: // implementacja // składowe klasy protected: // póki nie będziemy dziedziczyć, // to pole nas nie interesuje

Ćwiczenie 2 Wczytywanie i zapisywanie do plików tekstowych

Referencje. Zasady zaliczeń. Zasady zaliczeń. Zasady zaliczeń. Zasady zaliczeń. Zaawansowane Programowanie Obiektowe. Informacje organizacyjne:

I znowu można jak w C, za pomocą starych struktur i metod:

Tablice, funkcje - wprowadzenie

Transkrypt:

12.1 12.2 Klasa iostream... 1 Klasy ofstream, ifstream... 3 12.3 Struktura FILE... 8 12.1 Klasa iostream Obiekty klasy stream tworzone automatycznie: istream& cin, standardowe wejście konsoli (klawiatura). ostream& cout, standardowe wyjście konsoli(ekran). ostream& cprn, standardowy port równoległy LPT1 (drukarka). ostream& cerr, standardowe wyjście dla błędów. ostream& clog, standardowe wyjście dla logów. ostream& caux, standardowe dodatkowe wyjście. Klasy Stream, wymagane jest dołączenie plików nagłówkowych <fstream> i/lub <strstream>: fstream, klasa wejścia/wyjścia dla pliku, ifstream, klasa wejścia dla pliku, istrstream, klasa wejścia stringu, ofstream, klasa wyjścia dla pliku, ostrstream, klasa wyjścia dla typu string, strstream, klasa string I/O. Metody klasy stream: void close() int eof() Metoda char fill(char fill_ch void) int fail() istream& get(int ch) istream& getline(char* ch_string, int maxsize, char delimit) istream& ignore(int length[, int delimit]) iostream& open(char* filename, int mode) Opis Zamyka obiekt I/O. Zawraca wartość true, gdy koniec osiągnięto koniec strumienia. Ustawia lub zwraca znak fill_ch. Zawraca wartość true, gdy chociaŝ jedna operacja wejścia/wyjścia zakończyła się niepowodzeniem. Pobiera znak jako typ int (moŝe równieŝ pobrać wartość EOF (-1). Pobiera linię do bufora ch_string z maksymalną długością i dodaje znak końca. Czyta i opuszcza (ignoruje) liczbę znaków określoną przez długość strumienia do czasu znalezienia znaku EOF. Otwiera plik w określonym trybie. int peek(); int precision(int prec void) ostream& put(char ch) istream& putback(char ch) _read( int fd, void *buffer, unsigned int count ) long setf(long flags [, long mask]) long unsetf(long flags) int width(int width void) ostream& write(const char* buf, int size) Zwraca następny znak w strumieniu bez usuwania go. Ustawia lub zwraca liczbę cyfr w liczbie typu float. Wstawia określony znak do strumienia. Zwraca określony znak do strumienia. Czyta dane z pliku. Ustawia (zwraca) określone flagi ios. Czyści określone flagi ios. Wstawa lub zwraca szerokość bieŝącego pola. Zapisuje dane d o pliku. 1

Flagi, określające tryb otwarcia pliku (ios::x): app, otwiera do dopisania (append mode). ate, otwiera i szuka końca pliku. in, otwiera do zapisu (input mode). nocreate, błąd, jeŝeli plik nie istnieje. noreplace, błąd, jeŝeli plik istnieje. out, otwiera do czytania (output mode). trunc, otwiera i opuszcza puste znaki. binary, otwiera jako strumień binarny. Wartości wskaźnika mode funkcji fopen(),_wfopen(): FILE * fopen( const char *filename, const char *mode ); FILE *_wfopen( const wchar_t *filename, const wchar_t *mode ); "r", otwiera plik do czytania, gdy brak pliku wywołanie fopen() zwraca błąd. "w", otwiera pusty plik do czytania, gdy plik istnieje zawartość jest nadpisywana (niszczona). "a", otwiera plik do zapisu (dopisanie, appending), dane zapisuje na końcu pliku bez usuwania znaku EOF; tworzy plik jeŝeli go nie ma. "r+", otwiera plik do czytania i zapisu, plik musi istnieć. "w+", otwiera pusty plik do czytania i zapisu, gdy plik istnieje zawartość jest nadpisywana. "a+", otwiera pusty plik do czytania i dopisania, tworzy plik jeŝeli go nie ma. t, otwiera plik w trybie tekstowym. W tym trybie CTRL+Z jest interpretowany jako znak końca danych wejściowych. b, otwiera plik w trybie binarnym. c, UmoŜliwia uŝycie flagi zatwierdzenia (commit flag). n, resetuje flagę zatwierdzenia. S, określa, optymalizację zapisu do pamięci (caching) dla szeregowego dostępu do dysku. R, określa, optymalizację zapisu do pamięci (caching) dla losowego (random) dostępu do dysku. T, określa plik jako tymczasowy (temporary). D, określa plik jako tymczasowy, plik jest usuwany gdy uchwyt do pliku jest zamykany. 2

12.2 Klasy ofstream, ifstream Przykład 1. Zapis danych do pliku tekstowego (w12-01a-ofstream.cpp). ofstream PlikDoZapisu("c:\\plik.txt"); PlikDoZapisu << "Tekst \ndo zapisu. \n"; PlikDoZapisu.close(); Przykład 2. Wpisuje i dopisuje tekst do pliku (w12-01b-fstream-append-simple.cpp). ofstream dopliku("plik.txt"); dopliku << " Nadpisane \n... \n"; dopliku.close(); dopliku.open("plik.txt", ios::app); dopliku << "... i tekst dopisany."; dopliku.close(); Przykład 3. Program pobiera nazwę pliku z klawiatury zapisuje tekst do pliku (w12-02-ofstream-open.cpp). char NazwaPliku[128]; ofstream plikdozapisu; cout << "Wpisz nazwe pliku: "; cin >> NazwaPliku; plikdozapisu.open(nazwapliku); plikdozapisu << "Tekst1, tekst2..."; plikdozapisu.close(); 3

Przykład 4. Program dopisuje tekst do pliku, następnie czyta tekst z pliku (w12-03-fstream-close-open.cpp). char ctekst[100]; ofstream plikdanex("c:\\dane.txt", ios::in & ios::app); cout << "Wpisz tekst: "; cin >> ctekst; plikdanex << ctekst; plikdanex.close(); plikdanex.open("c:\\dane.txt", ios::out); plikdanex << ctekst; cout << ctekst << endl; plikdanex.close(); Przykład 5. Program zapisuje dane do pliku i czyta dane z pliku (w12-04-fstream-copy-read.cpp). ofstream DoPliku("c:\\out.txt"); DoPliku << "Dzien dobry"; DoPliku.close(); char ctab[80]; ifstream zpliku("c:\\out.txt"); zpliku >> ctab; zpliku.close(); cout << "ctab: " << ctab << endl; 4

Przykład 6. Program ustawia kursor na początku i na końcu pliku, róŝnica połoŝeń pozwala wyliczyć wielkość pliku w bajtach (w12-05-fstream-wielkoscpliku.cpp). Program wykorzystuje metody tellg(), seekg(): tellg( ),funkcja zwracana bieŝące połoŝenie w strumieniu. seekg(), funkcja wstawia kursor w odpowiednie miejsce w strumieniu. const char * filename = "c:\\plik.pdf"; int main () long poczatek,koniec; ifstream DoPliku (filename, ios::in ios::binary); poczatek = DoPliku.tellg(); DoPliku.seekg (0, ios::end); koniec = DoPliku.tellg(); DoPliku.close(); cout << "Wielkosc pliku: " << filename; cout << " = " << (koniec - poczatek) << " bajtow" << endl; return 0; 5

Przykład 7. Program sprawdza wielkość pliku, ustala wielkość bufora i kopiuje plik do bufora (w12-06-fstream- CopyToBufor.cpp). const char * NazwaPliku = "c:\\plik.pdf"; char * pcbufor; long BuforSize; ifstream PlikCzytany(NazwaPliku, ios::in ios::binary ios::ate); BuforSize = PlikCzytany.tellg(); PlikCzytany.seekg (0, ios::beg); pcbufor = new char [BuforSize]; PlikCzytany.read (pcbufor, BuforSize); PlikCzytany.close(); cout << "Caly plik zostal wczytany do pamieci" << endl; delete[] pcbufor; 6

Przykład 8. Program wyszukuje zadany string w pliku (w12-07-search-string.cpp). Program wykorzystuje metody: data(), konwertuje string na tablicę znaków. c_str(), konwertuje string na c-string (zerem zakończona tablica znaków). Program wczytuje do bufora stringi z pliku znajdujące się między spacjami. #include <string> int main() string NazwaPliku("c:\\plik.txt"); string szukanytekst("name=\"ssid\""); ifstream PlikDoCzyt(NazwaPliku.data()); //ifstream PlikDoCzyt(NazwaPliku.c_str()); string sbufor; if (!PlikDoCzyt) cout << "Blad, brak pliku" << endl; return 1; while (PlikDoCzyt >> sbufor) if (szukanytekst==sbufor) cout <<"Znaleziono tekst: " << sbufor << endl; PlikDoCzyt.close(); return 0; 7

12.3 Struktura FILE Przykład 1. Program czyta z pliku dane tekstowe (w12-08-file-fgets.cpp). Program wykorzystuje funkcję fgets(). fgets(), funkcja pobiera string ze strumienia. fgetws(),funkcja pobiera string ze strumienia. void main( void ) FILE *stream; char line[100]; if( fopen_s( &stream, "plik.txt", "r" ) == 0 ) if( fgets( line, 100, stream ) == NULL) cout << "blad wywolania fgets() "<< endl; else cout << line << endl; fclose( stream ); Przykład 2. Program zapisuje do pliku tekst (w12-09-file-fputs.cpp). FILE * pplik; errno_t err; // errno_t, wskaźnik typu int err = fopen_s( &pplik, "plik.txt", "w" ); fputs ("Tekst1 \ntekst2 \n", pplik); fclose(pplik); 8

Przykład 3. Program zapisuje i dopisuje tekst do pliku (w12-10-file-fgetpos-fsetpos.cpp). Program wykorzystuje funkcje: fgetpos( FILE *stream, fpos_t *pos ), stream: wskaźnik do pliku typu FILE. pos: wskaźnik połoŝenia kursora w strumieniu (w pliku). Zwracana wartość: 0 gdy funkcja jest wywołana z sukcesem, inna wartość gdy z błędem. fsetpos( FILE *stream, const fpos_t *pos ), stream: wskaźnik do pliku typu FILE. pos: wskaźnik połoŝenia kursora w strumieniu (w pliku). Zwracana wartość: 0 gdy funkcja jest wywołana z sukcesem, inna wartość gdy z błędem. void main () FILE * pplik; fpos_t Pozycja = NULL; errno_t err; err = fopen_s( &pplik, "plik.txt", "w" ); fputs ("Tekst... ", pplik); fgetpos (pplik, &Pozycja); // Pozycja+=9; cout << Pozycja << endl; // Pozycja = 10 fsetpos (pplik, &Pozycja); fputs (" + dodatkowy tekst", pplik); fgetpos (pplik, &Pozycja); cout << Pozycja << endl; // Pozycja = 28 fclose (pplik); 9

Przykład 4. Program kopiuje pliki binarne (w12-11-file-copybinfiles.cpp). Program wykorzystuje funkcję fread( void *buffer, size_t size, size_t count, FILE *stream ); buffer: zmienna na dane. size: wielkość bufora wyraŝona w bajtach. count: max. liczba buforów do czytania. stream: wskaźnik do struktury FILE. Zwracana wartość: liczba przeczytanych buforów. #define BUF_SIZE 4096 int main() char buf[buf_size]; int s; FILE * plikzrodlowy; FILE * plikdocelowy; errno_t err; err = fopen_s( &plikzrodlowy, "src.doc", "rb" ); err = fopen_s( &plikdocelowy, "dest.doc", "wb" ); if(!plikzrodlowy) cout << "Brak Pliku" << endl; return 1; while((s=fread(buf, 1, BUF_SIZE, plikzrodlowy))>0) fwrite(buf, 1, s, plikdocelowy); fclose(plikzrodlowy); fclose(plikdocelowy); return 0; 10