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



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

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

Biblioteka standardowa - operacje wejścia/wyjścia

Programowanie w językach wysokiego poziomu

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

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

Funkcje zawarte w bibliotece < io.h >

Funkcje zawarte w bibliotece < io.h >

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

INFORMATYKA Studia Niestacjonarne Elektrotechnika

7 Przygotował: mgr inż. Maciej Lasota

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

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

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 12. 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

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

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

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

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

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. Karolina Mikulska-Rumińska Pokój 573, tel Konsultacje wtorek 9-10.

Argumenty wywołania programu, operacje na plikach

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 - funkcje. Funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje

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

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

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

Programowanie Proceduralne

Podstawy programowania w języku C++

Laboratorium 6: Ciągi znaków. mgr inż. Leszek Ciopiński dr inż. Arkadiusz Chrobot dr inż. Grzegorz Łukawski

Podstawy programowania w języku C++

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

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

Struktury. Przykład W8_1

Ghost in the machine

Temat 1: Podstawowe pojęcia: program, kompilacja, kod

2 Przygotował: mgr inż. Maciej Lasota

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

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

Języki i paradygmaty programowania 1 studia stacjonarne 2018/19

Programowanie Procedurale. Pliki w języku C++

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

Konwersje napis <-> liczba Struktury, unie Scanf / printf Wskaźniki

Wykład PASCAL - Pliki tekstowe

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

Typy wyliczeniowe Konwersje napis <-> liczba Struktury, unie Scanf / printf Wskaźniki

Laboratorium 3: Tablice, tablice znaków i funkcje operujące na ciągach znaków. dr inż. Arkadiusz Chrobot dr inż. Grzegorz Łukawski

Tablicę 2-wymiarową można przedstawić jako pewien zestaw tablic 1-wymiarowych np.:

Kier. MTR Programowanie w MATLABie Laboratorium

1. Wprowadzanie danych z klawiatury funkcja scanf

Strumienie i pliki. Programowanie Proceduralne 1

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

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

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

Stałe, znaki, łańcuchy znaków, wejście i wyjście sformatowane

Tablice, funkcje - wprowadzenie

PODSTAW PROGRAMOWANIA WYKŁAD 7 ŁAŃCUCHY

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

#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 ); }

Struktury, unie, formatowanie, wskaźniki

Poprzedni wykład [ ] :

Wstęp do programowania INP003203L rok akademicki 2018/19 semestr zimowy. Laboratorium 3. Karol Tarnowski A-1 p.

Laboratorium Podstaw Informatyki. Kierunek Elektrotechnika. Ćwiczenie 1. Podstawy. Wprowadzenie do programowania w języku C. Katedra Metrologii AGH

Języki i metodyka programowania. Wprowadzenie do języka C

Zmienne, stałe i operatory

#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 ); }

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

Pliki. Operacje na plikach w Pascalu

Podstawy Programowania Podstawowa składnia języka C++

Pliki wykład 2. Dorota Pylak

Napisz program wypisujący na standardowym wyjściu następujący napis: Napis zawierający różne dziwne znaczki // \ \$ &%.

> C++ typy wyliczeniowe, struktury, unie, konwersje napis <-> liczba, formatowanie wyjścia

Zadanie nr 2: Arytmetyka liczb zespolonych

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

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

Program 6. Program wykorzystujący strukturę osoba o polach: imię, nazwisko, wiek. W programie wykorzystane są dwie funkcje:

Podstawy programowania w języku C++

1 Podstawy c++ w pigułce.

Lab 10. Funkcje w argumentach funkcji metoda Newtona. Synonimy nazw typów danych. Struktury. Tablice struktur.

Wstęp do programowania INP003203L rok akademicki 2018/19 semestr zimowy. Laboratorium 2. Karol Tarnowski A-1 p.

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

Podstawy Informatyki sem. I 2014/2015 studia zaoczne Elektronika i Telekomunikacja!

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

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

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

Wstęp do Programowania, laboratorium 02

Ćwiczenie 2 Wczytywanie i zapisywanie do plików tekstowych

Język ludzki kod maszynowy

Języki programowania imperatywnego

1 Podstawy c++ w pigułce.

Wskaźniki. Programowanie Proceduralne 1

Proces tworzenia programu:

Laboratorium nr 5: Mnożenie wektorów i macierzy

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

Tablice i struktury. czyli złożone typy danych. Programowanie Proceduralne 1

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

Programowanie w językach

3. Opracować program kodowania/dekodowania pliku tekstowego. Algorytm kodowania:

Transkrypt:

Pliki Informacje ogólne Plik jest pewnym zbiorem danych, zapisanym w systemie plików na nośniku danych (np. dysku twardym, pendrive, płycie DVD itp.). Może posiadać określone atrybuty, a odwołanie do niego odbywa się poprzez nazwę. Każdy plik ma skończoną długość, a informacja w nim zapisana jest ciągiem zer i jedynek (bitów). Ze względu na sposób interpretowania zawartości pliku wyróżnić możemy: pliki tekstowe - poszczególne bajty w pliku można zinterpretować jako dane alfanumeryczne (znaki), zapisane przy pomocy określonego kodowania (np. ASCII). Takie pliki są "czytelne" dla człowieka po otwarciu w podstawowym edytorze tekstu (Notatnik, vim) lub bezpośrednim wypisaniu zawartości przy pomocy polecenia powłoki (type-windows, cat-linux). pliki binarne - poszczególne bajty w pliku mają dowolne wartości, niekoniecznie są interpretowalne jako znaki alfanumeryczne. Taki plik jest zazwyczaj nieczytelny dla człowieka po otwarciu w podstawowym edytorze tekstu. Struktura informacji w plikach binarnych jest ściśle określona przez oprogramowanie, które zapisuje tego typu pliki (np. określoną strukturę ma plik MS Word, MS Excel itp.). Programista chcący odczytać i właściwie zinterpretować w swoim programie dane z pliku binarnego, powinien znać jego strukturę. Obsługa plików w języku C Standardowa biblioteka wejścia/wyjścia języka C udostępnia funkcje do operowania na plikach, tj. odczytu i zapisu danych z plików tekstowych i binarnych. Sposób pracy z plikami w języku C jest następujący: 1. Otwarcie pliku o określonym nazwie w określonym trybie (odczyt, zapis, dopisywanie) Funkcja fopen, prototyp: FILE *fopen(const char *filename, const char *mode); Funkcja fopen otwiera plik, którego nazwa podana jest w pierwszym argumencie. Drugim jest łańcuch znaków zwierający litery oznaczające sposób otwarcia pliku: "r" - otwiera plik do czytania "r+" - otwiera plik do czytania i nadpisywania (aktualizacja) "w" - otwiera plik do nadpisywania (zamazuje starą treść) "w+" - otwiera plik do nadpisywania i czytania "a" - otwiera plik do dopisywania (jeśli plik nie istnieje, to jest tworzony) "a+" - otwiera plik do dopisywania i odczytu (jeśli plik nie istnieje, to jest tworzony) "t" - otwiera plik w trybie tekstowym "b" - otwiera plik w trybie binarnym Litery można ze sobą łączyć, np. "rwb" albo "wt". Funkcja zwraca wskaźnik do pliku (FILE *) lub NULL, gdy pliku nie udało się otworzyć (nie istnieje, jest już otwarty w innym programie itp..

Przykład wywołania: FILE *f = fopen("dane.txt", "rt"); 2. Wykonywanie operacji odczytu/zapisu Odczyt/zapis danych z pliku tekstowego Funkcje do formatowanego odczytu/zapisu. int fscanf(file *stream, const char *format,...); int fprintf(file *stream, const char *format,...); Funkcje działają tak jak scanf i printf, przy czym jako pierwszy argument przyjmują wskaźnik do pliku uzyskany w punkcie 1 (ogólnie - wskaźnik do strumienia danych). //odczyt liczby całkowitej z pliku int i; char lan[] = "Operacje plikowe" ; fscanf(f, "%d", &i); //zapis łańcucha znaków do pliku fprintf(f, "%s", lan); Odczyt/zapis łańcucha znaków char *fgets(char *str, int size, FILE *stream); int fputs (const char *s, FILE *stream); char lan_do_zapisu[] = "Operacje plikowe" ; char lan_do_odczytu[80]; //odczyt łańcucha fgets(lan_do_odczytu,f); //zapis łańcucha fputs(lan_do_zapisu,f); Odczyt/zapis pojedynczego znaku int fgetc ( FILE * stream ); int fputc ( int character, FILE * stream ); char znak2; //odczyt znaku

znak2=fgetc(f); //zapis znaku fputc('a',f); Odczyt/zapis danych z pliku binarnego //odczyt size_t fread(void *ptr, size_t size, size_t nitems, FILE *stream); //zapis size_t fwrite(const void *ptr, size_t size, size_t nitems, FILE *stream); a) zapis łańcucha znaków do pliku binarnego char x[10]="abcdefghij"; FILE *fp; fp=fopen("test.bin", "wb"); fwrite(x, sizeof(x[0]), 10, fp); fclose(fp); b) odczyt liczby całkowitej z pliku binarnego int i; FILE *fp; fp=fopen("test.bin", "rb"); fread(&i, sizeof(i), 1, fp); fclose(fp); Pozostałe funkcje operujące na plikach //funkcja sprawdzająca, czy odczytano już cały plik int feof(file *stream); Przykład //wypisywanie zawartości pliku na konsolę char znak; while (!feof(f)) znak=fgetc(f); printf("%c",znak); //funkcja do zmiany odcztywanej/zapisywanej pozycji w pliku int fseek(file *file, long offset, int mode); //pobranie aktualnej pozycji w pliku long ftell(file *file);

3. Zamknięcie pliku int fclose (FILE *plik); Przykładowe programy wykonujące operacje na plikach a) wypisanie zawartości pliku tekstowego na ekran #include <stdio.h> void main() char znak; FILE *plik= fopen("dane.txt", "rt"); if(!plik) printf("blad otwarcia pliku"); return; while (feof(plik) == 0) znak = fgetc(plik); printf("%c", znak); fclose(plik); // otworzenie pliku do odczytu b) zapis pobranych z klawiatury liczb do pliku tekstowego #include <stdio.h> void main() int liczba; FILE *plik= fopen("liczby.txt", "wt"); if(!plik) printf("blad otwarcia pliku"); return; //wczytanie pierwszej liczby scanf("%d",&liczba); // otworzenie pliku do odczytu //wczytywane są liczby aż do wystąpienia 0 while (liczba!=0) fprintf(plik,"%d",liczba); scanf("%d",&liczba); fclose(plik);

Zadania 1. Napisz program zliczający i wypisujący na ekranie liczbę znaków w pliku tekstowym. 2. Zmodyfikuj program z punktu 1, aby zliczał tylko cyfry. 3. Napisz program wczytujący liczby całkowite (rozdzielone białymi znakami) z pliku tekstowego i obliczający ich sumę. 4. Napisz program wczytujący plik tekstowy i wypisujący na ekran każdy znak dwukrotnie. 5. Rozszerz program z punktu 4, aby znaki były dodatkowo zapisywane do pliku wyjściowego (innego niż wejściowy). 6. Napisz program zapisujący tablicę liczb zmiennoprzecinkowych do pliku tekstowego.

Złożone typy danych Na podstawie http://pl.wikibooks.org/wiki/c/typy_złożone Struktury Struktury to specjalny typ danych mogący przechowywać wiele wartości w jednej zmiennej. Od tablic jednakże różni się tym, iż te wartości mogą być różnych typów. Struktury definiuje się w następujący sposób: struct Struktura ; int pole1; int pole2; char pole3; gdzie "Struktura" to nazwa tworzonej struktury. Nazewnictwo, ilość i typ pól definiuje programista według własnego uznania. Zmienną posiadającą strukturę tworzy się podając jako jej typ nazwę struktury. struct Struktura zmiennas; Dostęp do poszczególnych pól uzyskuje się przy pomocy operatora wyboru składnika: kropki ('.'). zmiennas.pole1 = 60; /* przypisanie liczb do pól */ zmiennas.pole2 = 2; zmiennas.pole3 = 'a'; /* a teraz znaku */ Przykładowy program wykorzystujący struktury #include <stdio.h> struct Punkt int x; int y; int z; void main() struct Punkt p1; struct Punkt p2 3, 4, 5 ; p1.x=0; p1.y=0; p1.z=0; printf("punkt p1: %d %d %d",p1.x,p1.y,p1.z); pritf("podaj współrzędną Y punktu 2"); scanf("%d",&p2.y); Zadania 1. Zdefiniuj strukturę przechowującą informacje o liczbie zespolonej (w postaci algebraicznej). Zdefiniuj w programie zmienne typu tej struktury. Spróbuj wypisać wartości składowych

struktury i wczytać z klawiatury. 2. Napisz odrębne funkcje do wczytywania/wypisywania pojedynczej "liczby zespolonej" z klawiatury. Wywołaj funkcje w programie głównym. 3. Napisz funkcje wykonujące operacje na liczbach zespolonych: dodawanie, odejmowanie, mnożenie, moduł, sprzężenie. Wywołaj funkcje w programie głównym.