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

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

Funkcje zawarte w bibliotece < io.h >

Funkcje zawarte w bibliotece < io.h >

METODY I JĘZYKI PROGRAMOWANIA. Programowanie w języku C notatki z wykładów. Operacje WE/WY. Operacje na plikach (niskiego poziomu) < IO.

Programowanie w językach

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

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

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

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

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

Programowanie w językach wysokiego poziomu

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

Biblioteka standardowa - operacje wejścia/wyjścia

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

INFORMATYKA Studia Niestacjonarne Elektrotechnika

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

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

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

Programowanie Procedurale. Pliki w języku C++

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

Wejście wyjście strumieniowe

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

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

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

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

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

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

Podstawy programowania w języku C++

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

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

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

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

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

Programowanie i struktury danych

#include <stdio.h> void main(void) { int x = 10; long y = 20; double s; s = x + y; printf ( %s obliczen %d + %ld = %f, Wynik, x, y, s ); }

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

Programowanie Proceduralne

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

7 Przygotował: mgr inż. Maciej Lasota

Strumienie i pliki. Programowanie Proceduralne 1

OPERACJE WEJŚCIA / WYJŚCIA. wysyła sformatowane dane do standardowego strumienia wyjściowego (stdout)

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

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

Temat: Operacje na plikach. Pliki tekstowe i binarne. Faza otwarcia, zapisu/odczytu i zamknicia pliku.

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

Język C++ wykład VIII

PROE wykład 3 klasa string, przeciążanie funkcji, operatory. dr inż. Jacek Naruniec

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

#include <stdio.h> int main( ) { int x = 10; long y = 20; double s; s = x + y; printf ( %s obliczen %d + %ld = %f, Wynik, x, y, s ); }

Podstawy programowania w języku C++

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

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

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

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

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

Podstawy programowania w języku C++

Programowanie Obiektowe i C++

Wprowadzenie do programowania i programowanie obiektowe

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

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

Pliki wykład 2. Dorota Pylak

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

PODSTAW PROGRAMOWANIA WYKŁAD 7 ŁAŃCUCHY

Wykład :37 PP2_W9

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

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

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

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

wer. 7 z drobnymi modyfikacjami Wojciech Myszka :48:

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

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

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

Pliki wykład 2. Dorota Pylak

Pliki wykład. Dorota Pylak

STRUMIENIE TEKSTOWE WEJŚCIOWE WPROWADZANIE DANYCH STRUMIENIE BAJTOWE, STRUMIENIE TEKSTOWE

Ghost in the machine

Pliki wykład. Dorota Pylak

Wykład II Tablice (wstęp) Przykłady algorytmów Wstęp do języka C/C++

Ćwiczenie nr 8. Temat: Operacje na plikach - zapis i odczyt danych.

( wykł. dr Marek Piasecki )

main( ) main( void ) main( int argc, char argv[ ] ) int MAX ( int liczba_1, liczba_2, liczba_3 ) źle!

Podstawy Informatyki. Inżynieria Ciepła, I rok. Wykład 10 Kurs C++

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

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

Języki i metody programowania I

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

Język C++ Różnice między C a C++

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

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

Kier. MTR Programowanie w MATLABie Laboratorium

Tablice, funkcje - wprowadzenie

Funkcje standardowej biblioteki wejść-wyjść do wyświetlania i pobierania danych

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

Podstawy programowaniu. Wykład: 3. Budowa programu Operacje we/wy Instrukcje wyboru. dr Artur Bartoszewski - Podstawy programowania, sem.

Języki C i C++ Wykład: 1. Wstęp Budowa programu Operacje we/wy Instrukcje wyboru. dr Artur Bartoszewski - Języki C i C++, sem.

Podstawy Programowania

Metodyki i Techniki Programowania MECHANIZM POWSTAWANIA PROGRAMU W JĘZYKU C PODSTAWOWE POJĘCIA

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

wykład III uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C - zarządzanie pamięcią, struktury,

Transkrypt:

OPERACJE WEJŚCIA WYJŚCIA (część b) Operacje wejścia / wyjścia odczyt i zapis danych do róŝnych zewnętrznych urządzeń lub nośników pamięciowych komputera: np. klawiatury, ekranu monitora, dyskietki, czytnika taśmy, drukarki, itp. Język C/C++ nie ma wbudowanych Ŝadnych instrukcji umoŝliwiających wykonywanie operacji wejścia-wyjścia! SłuŜą do tego funkcje biblioteczne. Operacje na plikach (niskiego poziomu) < IO.H > int open ( char nazwa_pliku, int tryb_dostepu ) int close ( int handle ) int write ( int handle, void adres_bufora, unsigned ilosc_bajtow ) bin. int read ( int handle, void adres_bufora, unsigned ilosc_bajtow ) bin. int eof ( int handle ) long tell ( int handle ) long filelength ( int handle ) long lseek ( int handle, long przesuniecie, int względem_czego ) Proceduralnie za pomocą strumieniu < STDIO.H > FILE fopen ( char nazwa_pliku, char rodzaj_operacji ) int fclose ( FILE strumien ) int fcloseall (void ) int fputc ( int znak, FILE strumien ) txt int fputs ( char tekst, FILE strumien ) txt int fprintf ( FILE strumien, char format,... ) txt int fwrite ( void adres, size_t rozm_bl, size_t il_blokow, FILE strumien ) bin int fgetc ( FILE strumien ) txt char fgets ( char tekst, int dlugosc, FILE strumien ) txt int fscanf ( FILE strumien, char format,... ) txt int fread ( void adres, size_t rozm_bl, size_t il_blokow, FILE strumien ) bin int feof ( FILE strumien ) int fseek ( FILE strumien, long przesuniecie, int wzgledem) long ftell ( FILE strumien ) int fflush ( FILE strumien ) int flushall ( void ) M. Piasecki: JĘZYKI PROGRAMOWANIA (1) 1 (W10b) Strumienie obiektowe

OBIEKTOWA REALIZACJA OPERACJI WEJŚCIA WYJŚCIA W języku C++ moŝliwa jest obiektowa realizacja operacji we/wy. Podejście obiektowe zakłada, Ŝe róŝne urządzenia będą reprezentowane w programie za pomocą róŝnych obiektów modelujących strumienie danych wpływające lub wypływające z tych urządzeń. W obiektowych bibliotekach we/wy zdefiniowano róŝne klasy obiektów strumieni (w zaleŝności od specyficznych cech danego urządzenia ). Cechy strumienia moŝna odczytać z początkowych liter nazw klas: i... (in) strumienie wejściowe (np. istream, ifstream, istrstream), o... (out) strumienie wyjściowe (np. ostream, ofstream, ostrstream), f... (file) strumienie plikowe (np. ifstream, ofstream, fstream), str.. (string) strumienie pamięciowe (np. istrstream, strstream), Aby uniknąć wielokrotnego definiowania tych samych operacji (np. dla kaŝdego strumienia musi być funkcja informująca czy wystąpił błąd) klasy strumieni tworzą wielopoziomową hierarchię: PODSTAWOWĄ KLASĄ JEST KLASA ios Modeluje ona właściwości (tzn. funkcje, zmienne i stałe) wspólne dla wszystkich strumieni. Definicja klasy ios jest zawarta w pliku <iostream.h>. int ios::bad( ) - zwraca wartość róŝną od zera, jeŝeli wystąpił błąd, int ios::good( ) - zwraca wartość róŝną od zera, jeŝeli nie było błędu, int ios::eof( ) - zwraca wartość róŝną od zera, gdy koniec danych, int ios::width( int ) - steruje szerokością pola wyjściowego (np.ilość cyfr) int ios::precision( int ) - steruje ilością cyfr po przecinku Stałe trybów otwarcia strumienia: ios::in - otwórz strumień do odczytu, ios::out - otwórz strumień do zapisu, ios::app - otwórz strumień w trybie dopisywania na końcu, ios::trunc - wyzeruj rozmiar pliku, jeŝeli istnieje, ios::binary - otwórz jako strum. binarny (domyślnie strum. tekstowy), M. Piasecki: JĘZYKI PROGRAMOWANIA (1) 2 (W10b) Strumienie obiektowe

Stałe określające pozycję odniesienia (podczas przesuwania pozycji): ios::beg - względem początku pliku, ios::cur - względem pozycji aktualnej, ios::end - względem końca pliku, PODSTAWOWE OPERACJE ODCZYTU klasa istream Modeluje ona metody wspólne dla wszystkich strumieni wejściowych z których odczytujemy dane (tekstowe lub binarne). Definicja klasy istream jest zawarta równieŝ w pliku <iostream.h>. get( char& znak) - wczytuje jeden znak ze strumienia, getline(char bufor, int max_dlug, char znak_konca) - wczytuje linię znaków, read( char bufor, int ilość_bajtów ) - wczytuje ciąg bajtów do bufora, >> - operator pobrania/odczytu danych ze strumienia tekstowego. PODSTAWOWE OPERACJE ZAPISU klasa ostream Modeluje ona metody wspólne dla wszystkich strumieni wyjściowych do których zapisujemy dane (tekstowe lub binarne). Definicja klasy ostream jest zawarta równieŝ w pliku <iostream.h>. put( char& znak) - wysyła jeden znak do strumienia, write(char bufor, int ilość_bajtów) - wysyła ciąg bajtów z bufora do strum. << - operator wysłania/zapisu danych do strumienia tekstowego. STRUMIENIE STANDARDOWE W programach napisanych w języku C++ moŝna korzystać z czterech predefiniowanych, zawsze otwartych strumieni standardowych: cin - standardowy strumień wejściowy - klawiatura - (istream), cout - standardowy strumień wyjściowy - ekran - (ostream), cerr - strumień komunikatów błędów - zazwyczaj ekran - (ostream), clog - w pełni buforowany strumień komunikatów błędów, M. Piasecki: JĘZYKI PROGRAMOWANIA (1) 3 (W10b) Strumienie obiektowe

PORÓWNANIE WE/WY «proceduralnego» i «obiektowego» Wczytywanie danych z klawiatury i wydruk na ekranie // podejście proceduralne # include <stdio.h> int x; long y; double z; char tekst[ 20 ]; scanf( %c, &znak ); scanf( %d, &x ); scanf( %ld, &y ); scanf( %lf, &z ); scanf( %20s,tekst ); //gets(tekst) printf( znak = %c \n, znak ); printf( int = %d \n, x ); printf( long = %d \n, y ); printf( double = %f \n, z ); printf( tekst = %s \n, tekst ); // podejście obiektowe # include <iostream.h> int x; long y; double z; char tekst[ 20 ]; cin >> znak; // cin.get(znak); cin >> x; cin >> y; cin >> z; cin >> tekst; // cin.getline(tekst,20) cout << znak = << znak << \n ; cout << int = << x << \n ; cout << long = << y << \n ; cout << double= << z << \n ; cout << tekst = << tekst << \n ; STRUMIENIE PLIKOWE klasa fstream Klasa fstream jest klasą pochodną od klas iostream (istream + ostream) oraz fstreambase. Jej definicja zawarta jest w pliku <fstream.h>. void open( char nazwa_pliku, int tryb_otwarcia ) - otwarcie pliku, void close( void ) - zamknięcie pliku skojarzonego ze strumieniem Oraz wszystkie metody klas pierwotnych (względem fstream): z klasy ios fail, good, eof, width, precision z klasy istream get, getline, read, << z klasy ostream put, write, >> M. Piasecki: JĘZYKI PROGRAMOWANIA (1) 4 (W10b) Strumienie obiektowe

Kopiowanie plików tekstowych z jednoczesną zamianą liter na duŝe // podejście proceduralne # include <stdio.h> # include <ctype.h> FILE wej, wyj; wej = fopen( dane.dat, rt ); wyj = fopen( wyniki.dat, wt ); if( (wej!=null) && (wyj!=null) ) while(!feof(wej) ) znak = fgetc(wej); znak = toupper(znak); fputc( znak,wyj ); fclose( wej ); fclose( wyj ); // podejście obiektowe # include <fstream.h> # include <ctype.h> fstream wej,wyj; wej.open( dane.dat, ios::in ); wyj.open( wyniki.dat, ios::out ); if( wej.good( ) && wyj.good( ) ) while(! wej.eof( ) ) wej.get( znak ); znak = toupper( znak ); wyj.put( znak ); wej.close( ); wyj.close( ); // funkcja wyznaczająca pozycję maksymalnej liczby double w pliku binarnym # include <fstream.h> # include <values.h> long POZYCJA_MAKSIMUM( char nazwa_pliku ) long licznik=0, pozycja=0; double liczba, max = -MAXDOUBLE; fstream plik( nazwa_pliku, ios::in ios::binary ); while( plik.good( ) &&!plik.eof( ) ) plik.read( (char*)&liczba, sizeof(double) ); licznik++; if( liczba>max ) max=liczba; pozycja=licznik; plik.close( ); return pozycja ; M. Piasecki: JĘZYKI PROGRAMOWANIA (1) 5 (W10b) Strumienie obiektowe