Programowanie Proceduralne

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

Biblioteka standardowa - operacje wejścia/wyjścia

Funkcje zawarte w bibliotece < io.h >

Funkcje zawarte w bibliotece < io.h >

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

Programowanie Procedurale. Pliki w języku 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

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

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

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

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

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

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

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

Programowanie w językach wysokiego poziomu

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

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

Ghost in the machine

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

Strumienie i pliki. Programowanie Proceduralne 1

Podstawy programowania w języku C++

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

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

Spis treści PLIKI BINARNE W JĘZYKU C. Informatyka 2. Instrukcja do pracowni specjalistycznej z przedmiotu. Numer ćwiczenia INF23

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

Podstawy programowania w języku C++

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

Spis treści JĘZYK C - PLIKI BINARNE. Informatyka 2. Instrukcja do pracowni specjalistycznej z przedmiotu. Numer ćwiczenia INF30

wer. 7 z drobnymi modyfikacjami Wojciech Myszka :48:

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

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

Programowanie w językach

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

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

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

Spis treści PLIKI BINARNE W JĘZYKU C. Informatyka 2. Instrukcja do pracowni specjalistycznej z przedmiotu. Numer ćwiczenia INF23

7 Przygotował: mgr inż. Maciej Lasota

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

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

Języki i metody programowania I

Struktury. Przykład W8_1

Argumenty wywołania programu, operacje na plikach

dr inż. Jarosław Forenc

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

Politechnika Białostocka, Wydział Elektryczny, Katedra Elektrotechniki Teoretycznej i Metrologii ul. Wiejska 45D, Białystok

Programowanie Proceduralne

Politechnika Białostocka, Wydział Elektryczny, Katedra Elektrotechniki Teoretycznej i Metrologii ul. Wiejska 45D, Białystok

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

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

Lekcja 10. Uprawnienia. Dołączanie plików przy pomocy funkcji include() Sprawdzanie, czy plik istnieje przy pmocy funkcji file_exists()

Podstawy programowania w języku C++

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

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

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

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

Podstawy programowania w języku C++

Operacje powiązane z systemem:

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

Wykład PASCAL - Pliki tekstowe

4. Pliki Informacje ogólne o dostępie do plików w PHP Sprawdzanie istnienia pliku file_exists()

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

PODSTAW PROGRAMOWANIA WYKŁAD 7 ŁAŃCUCHY

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

Programowanie Proceduralne

INFORMATYKA Studia Niestacjonarne Elektrotechnika

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

Wskaźniki. Programowanie Proceduralne 1

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

Tablice, funkcje - wprowadzenie

Stałe i zmienne znakowe. Stała znakowa: znak

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

Bardzo szybkie podsumowanie: wykład 4

część 6 biblioteka standardowa wejścia - wyjścia 1. sformatowane wejście - wyjście 2. rekordowe (binarne) wejście - wyjście

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

Podstawy programowania. Wykład Funkcje raz jeszcze. Biblioteka standardowa. Krzysztof Banaś Podstawy programowania 1

Katedra Elektrotechniki Teoretycznej i Informatyki. wykład 9 - sem.iii. Dr inż. M. Czyżak

Programowanie w języku C++

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

Podstawy programowania 1

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

Ćwiczenie 7. Strumień trójelementowy. A g a EOF... EOF... Wprowadzenie do programowania w języku C. Wskaźnik bieżącej pozycji. bieżącej pozycji.

Podstawy programowania. Wykład Pętle. Tablice. Krzysztof Banaś Podstawy programowania 1

Języki programowania. Tablice struktur, pliki struktur. Część ósma. Autorzy Tomasz Xięski Roman Simiński

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

1 Przetwarzanie plików

4. Tablica dwuwymiarowa to jednowymiarowa tablica wskaźników do jednowymiarowych tablic danego typu.

Poprzedni wykład [ ] :

część 8 wskaźniki - podstawy Jarosław Gramacki Instytut Informatyki i Elektroniki Podstawowe pojęcia

Instrukcja do laboratorium Systemów Operacyjnych (semestr drugi)

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

Wejście wyjście strumieniowe

Internetowe bazy danych

Obsługa plików Procesy

Podstawy Programowania. Specyfikacja funkcji, operacje wejścia i wyjścia na plikach, rekurencja, tablice i wskaźniki

Inne darmowe! kompilatory języka C działające m.in. po systemem WINDOWS:

Podstawy programowania komputerów

Wskaźniki. Przemysław Gawroński D-10, p marca Wykład 2. (Wykład 2) Wskaźniki 8 marca / 17

Pliki. Operacje na plikach w Pascalu

Transkrypt:

Programowanie Proceduralne Pliki Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 12

Operacje plikowe Plik - dokument lub inny zbiór danych zapisany na dysku, oznaczony unikatowa nazwa. Plik jest ciagiem bajtów Plik w C: plik dyskowy (disk file) urzadzenie peryferyjne typu terminal drukarka

Strumień Strumień (stream) w C: przepływ danych z programu do pliku lub odwrotnie Strumień nie jest zwiazany z konkretnym urzadzeniem (device-independend) Aby przeprowadzić operację Wejścia/Wyjścia, należy skojarzyć plik ze strumieniem Dwa formaty strumieni: text or binary stream

Buforowanie Wejścia/Wyjścia Bufor - obszar pamięci służacy do tymczasowego przechowywania danych przed przesłaniem ich do miejsca przeznaczenia Posługujac się buforami system operacyjny zmniejsza ilość odwołań do fizycznych urzadzeń Wejścia/Wyjścia Strumienie We/Wy sa buforowane w sposób domyślny Fizyczny zapis do pliku - buffer flush

Wskaźniki typu FILE Struktura FILE służy do zarzadzania plikami i jest zdefiniowana w pliku stdio.h Wskaźnik typu FILE służy do odwoływania się do konkretnego pliku dyskowego. W obrębie struktury FILE można znaleźć: rozmiar pliku, znacznik pozycji w pliku, adres bufora danych itp.

Otwieranie pliku FILE* fopen (char const* path, char const* mode); Jeśli operacja otwarcia pliku nie powiedzie się, to funkcja zwraca wskaźnik pusty (null pointer). Nazwy plików sa ograniczone do FILENAME_MAX znaków. Jednocześnie można otworzyć co najwyżej FOPEN_MAX plików. Powyższe dwie wartości zdefiniowana sa w zbiorze stdio_lim.h Dla gcc version 4.1.2 20061027 wartość FILENAME_MAX = 4096, natomiast FOPEN_MAX=16

Tryby otwarcia pliku mode Znaczenie Pozycja r Otwarcie pliku tekstowego do odczytu Poczatek r+ Otwarcie pliku do odczytu i zapisu Poczatek Usunięcie zawartości pliku lub w utworzenie nowego pliku do zapisu Poczatek Otwarcie do odczytu i zapisu w+ Jeśli plik istnieje, jego zawartość zostaje usunięta Poczatek Otwarcie do dopisywania a Jeśli plik nie istnieje, zostaje utworzony Koniec Otwarcie do odczytu i zapisu a+ Jeśli plik nie istnieje, zostaje utworzony Koniec

Otwieranie/zamykanie pliku FILE *fptr; if ((fptr = fopen( TEST.TXT, r )) == NULL){ printf( Nie moge otworzyc pliku TEST.TXT.\n); exit(1); } Po wykonaniu operacji plik należy odłaczyć od strumienia danych: int fclose(file* stream); Funkcja fclose() wykonuje czyszczenie bufora. Przykład: zliczanie bajtów w pliku program countbytes.c

Odczyt i zapis plików fgetc() i fputc() znak-po-znaku getc() i putc() równoważne fgetc i fputc. Definiowane zazwyczaj jako makro. getc(stdin) równoważne int getchar(void) int fgetc(file *stream); int fputc(int c, FILE *stream); fgets() i fputs() wiersz-po-wierszu char* fgets(char *s, int n, FILE *stream); int fputs(const char *s, FILE *stream); fread() i fwrite() blok-po-bloku size_t fread(void *ptr, size_t size, size_t n, FILE *str); size_t fwrite(const void *ptr, size_t size, size_t n, FILE *str);

Odczyt i zapis plików Przykłady Kopiowanie plików tekstowych program textcopy.c Kopiowanie dowolnych plików program bincopy.c Problem z otwieraniem pliku przy stosowaniu funkcji fgets do wczytywania nazwy pliku program bad.c Rozwi azanie problemu z otwieraniem pliku przy stosowaniu funkcji fgets do wczytywania nazwy pliku program good.c

Funkcje do obsługi plików (stdio.h) int fseek(file* stream, long offset, int origin); Funkcja wyznacza pozycję w strumieniu stream; następne czytanie lub pisanie będzie odnosić się do danych rozpoczynjacych się od nowej pozycji. Dla plków binarnych nowa pozycja wypada w miejscu oddalonym o offset znaków od punktu odniesienia origin, który może mieć wartości SEEK_SET (poczatek pliku), SEEK_CUR (bieżaca pozycja w pliku), SEEK_END (koniec pliku). Dla plików tekstowych wartość offset musi być równa zeru lub wartości zwróconej przez funkcje ftell(); UWAGA! Pod linuxem plik binarny i tekstowy sa traktowane tak samo. Funkcja zwraca wartość różna od zera w przypadku błędu.

Funkcje do obsługi plików (stdio.h) Przykładowe programy Wypisywanie pliku w odwrotnej kolejności program reverse.c Odczytywanie wielkości pliku w bajtach program filesize.c

Funkcje do obsługi plików (stdio.h) long ftell(file* stream); Funkcja zwraca wartość bieżacej pozycji dla strumienia stream lub -1L w przypadku niepowodzenia. Przyklad: program filesize.c. void rewind(file* stream); Wywolanie rewind(fp) jest równoważne z ciagiem wywolań: fseek(fp,0l,seek_set); clearerr(fp); Przyklad: programy filesize.c, student.

Funkcje do obsługi plików (stdio.h) int fgetpos(file* stream, fpos_t *ptr); Funkcja zapamietuje bieżac a pozycje strumienia stream w miejscu wskazywanym przez ptr. W przypadku błędu funkcja zwraca wartość różna od zera. int fsetpos(file* stream, const fpos_t *ptr); Funkcja ustawia bieżac a pozycje strumienia stream według wartości zapamietanej przez funkcję fgetpos() w miejscu wskazywanym przez ptr. W przypadku błędu funkcja zwraca wartość różna od zera. Przykład: program fsize.c

Funkcje do obsługi plików (stdio.h) int remove(const char* path); Funkcja usuwa wskazany plik tak, że późniejsza próba otworzenia go zakończy się niepowodzeniem. Funkcja zwraca wartość różna od zera jeśli usunięcie pliku się nie powiedzie; Przyklad: program remove_test.c. int rename(const char* oldname,const char* newname); Funkcja zmienia nazwe pliku z oldname na newname. Funkcja zwraca wartość różna od zera jeśli zamiana się nie powiedzie; Przyklad: program rename_test.c.

Funkcje do obsługi plików (stdio.h) FILE* freopen (char const* filename, char const* mode, FILE* stream); Funkcja freopen otwiera wskazany plik (filename) przy wskazanym rodzaju dostępu (mode) i wiaże z nim strumień stream. Funkcja zwraca wartość stream lub NULL w przypadku błędu. Funkcji freopen zwykle używa się do zmiany plików zwiazanych ze strumieniami stdin, stdout i stderr. Przyklad: program freopen_test.c.

Funkcje do obsługi plików (stdio.h) #include <stdio.h> int main(void) { int c; FILE *p=fopen("good.c","r"); if (p!=null){ while ((c = getc(p))!= EOF) putc(c, stdout); } FILE *r=freopen("good.c","r",p); if(r!=null){ printf("udalo sie zmienic p na r\n"); while ((c = getc(r))!= EOF) putc(c,stdout); } fseek(r,0l,seek_set); FILE *ekran=freopen("telewizor","w",stdout); if(ekran!=null){ printf("udalo sie zmienic na ekran\n"); while ((c = getc(r))!= EOF) putc(c,ekran); } fclose(r); fclose(ekran); return 0; }

Funkcje do obsługi plików (stdio.h) FILE* tmpfile(void) - otwiera plik tymczasowy w trybie w+. Znika, gdy zostaje zamknięty, lub gdy kończy się program. int access(const char* path, int amode) - sprawdza istnienie pliku w systemie. Znajduje sie w zbiorze unistd.h. Parametr amode może przyjać wartość R_OK, W_OK, X_OK (tryby zapisu), lub F_OK (test istnienia). Funkcja zwraca wartość 0 w przypadku istnienia pliku i możliwości dostępu do niego. W przeciwnym przypadku zwraca wartość -1 i ustawia stosownie zmienna errno.

Funkcje do obsługi błędów (stdio.h) int feof(file* stream); Funkcja zwraca wartość różna od zera w przypadku, gdy jest ustawiony znacznik końca pliku dla strumienia stream. int clearerr(file* stream); Funkcja kasuje znaczniki końca pliku i błedu dla strumienia stream. int ferror(file* stream); Funkcja zwraca wartość różna od zera w przypadku, gdy jest ustawiony znacznik błędu dla strumienia stream.

Funkcje do obsługi błędów (stdio.h) void perror(const char* s); Wywolanie perror(s) wypisuje tekst z tablicy s i zalezny od implementacji komunikat o błędzie odpowiadający wartości errno (zdefiniowanej w zbiorze errno.h). Przykład: przetwarzanie plików, ktorych nazwy podawane sa jako argumenty programu szkielet programu openclose.c