• Nie Znaleziono Wyników

Elektrotechnika, semestr III, studia niestacjonarne I stopnia Elektrotechnika, semestr III, studia niestacjonarne I stopnia

N/A
N/A
Protected

Academic year: 2021

Share "Elektrotechnika, semestr III, studia niestacjonarne I stopnia Elektrotechnika, semestr III, studia niestacjonarne I stopnia"

Copied!
4
0
0

Pełen tekst

(1)

Informatyka 2

Informatyka 2 (EZ1E3012) (EZ1E3012)

Politechnika Białostocka

Politechnika Białostocka -- Wydział Elektryczny Wydział Elektryczny

Elektrotechnika, semestr III, studia niestacjonarne I stopnia Elektrotechnika, semestr III, studia niestacjonarne I stopnia

Rok akademicki 2020/2021 Rok akademicki 2020/2021

Pracownia nr 8 Pracownia nr 8

dr inż. Jarosław Forenc

Informatyka 2 (EZ1E3012), studia niestacjonarne I st. dr inż. Jarosław Forenc

Rok akademicki 2020/2021, Pracownia nr 8 2/13

Przetwarzanie plików Przetwarzanie plików

Operacje związane z przetwarzaniem pliku zazwyczaj składają się z trzech części

1. Otwarcie pliku (strumienia):

- funkcje: fopen()

2. Operacje na pliku (strumieniu), np. czytanie, pisanie:

- funkcje dla plików tekstowych: fprintf(), fscanf(), fgetc(), fputc(), fgets(), fputs()…

- funkcje dla plików binarnych: fread(), fwrite(), … 3. Zamknięcie pliku (strumienia):

- funkcja: fclose()

Informatyka 2 (EZ1E3012), studia niestacjonarne I st. dr inż. Jarosław Forenc

Rok akademicki 2020/2021, Pracownia nr 8 3/13

Otwarcie i zamknięcie pliku Otwarcie i zamknięcie pliku

#include <stdio.h>

int main(void) {

FILE *fp;

fp = fopen("plik.txt","w");

if (fp == NULL) {

printf("Blad otwarcia pliku.\n");

return (-1);

}

/* przetwarzanie pliku */

fclose(fp);

return 0;

}

Informatyka 2 (EZ1E3012), studia niestacjonarne I st. dr inż. Jarosław Forenc

Rok akademicki 2020/2021, Pracownia nr 8 4/13

Typy standardowych operacji wejścia

Typy standardowych operacji wejścia--wyjścia wyjścia

znakowe getc() - putc() getchar() - putchar()

łańcuchowe gets() - puts() fgets() - fputs() getchar() putchar()

fgetc() - fputc() ungetc()

fgets() fputs()

sformatowane scanf() - printf() fscanf() - fprintf() sscanf() - sprintf()

rekordowe (blokowe) fread() - fwrite() fgetpos() - fsetpos() fseek()

ftell()

rewind()

(2)

Informatyka 2 (EZ1E3012), studia niestacjonarne I st. dr inż. Jarosław Forenc

Rok akademicki 2020/2021, Pracownia nr 8 5/13

Typy standardowych operacji wejścia

Typy standardowych operacji wejścia--wyjścia (pliki) wyjścia (pliki)

gets() - puts() getchar() - putchar()

znakowe getc() - putc()

łańcuchowe

fgets() - fputs()

scanf() - printf() getchar() putchar() fgetc() - fputc() ungetc()

fgets() fputs()

sformatowane

fscanf() - fprintf() sscanf() - sprintf()

rekordowe (blokowe) fread() - fwrite() fgetpos() - fsetpos() fseek()

ftell()

rewind()

operacje na plikach

Informatyka 2 (EZ1E3012), studia niestacjonarne I st. dr inż. Jarosław Forenc

Rok akademicki 2020/2021, Pracownia nr 8 6/13

Wykrycie końca pliku tekstowego Wykrycie końca pliku tekstowego

Funkcje Metoda

getc(), fgetc() zwracana wartość: EOF fgets() zwracana wartość: NULL

zwraca wartość różną od zera, jeśli podczas ostatniej operacji odczytu pliku wskazywanego przez fp został wykryty jego koniec;

w przeciwnym razie zwraca wartość 0 (zero)

fscanf() wywołanie funkcji: feof()

int feof(FILE *fp);

Informatyka 2 (EZ1E3012), studia niestacjonarne I st. dr inż. Jarosław Forenc

Rok akademicki 2020/2021, Pracownia nr 8 7/13

Plik tekstowy i binarny Plik tekstowy i binarny

Przykład zawartości pliku tekstowego (Notatnik):

dane w pliku tekstowym zapisane są w postaci kodów ASCII

dane w pliku tekstowym zapisane są w postaci kodów ASCII

Przykład zawartości pliku binarnego (Notatnik):

dane w pliku binarnym zapisane są w takiej samej postaci jak w pamięci komputera

Informatyka 2 (EZ1E3012), studia niestacjonarne I st. dr inż. Jarosław Forenc

Rok akademicki 2020/2021, Pracownia nr 8 8/13

Operacje na plikach binarnych Operacje na plikach binarnych

zapisuje n elementów o rozmiarze s bajtów każdy, do pliku określanego przez fp, biorąc dane z obszaru pamięci wskazywanego przez p

zwraca liczbę faktycznie zapisanych elementów

size_t fwrite(const void *p, size_t s, size_t n, FILE *fp);

pobiera n elementów o rozmiarze s bajtów każdy, z pliku określanego przez fp i umieszcza odczytane dane w obszarze pamięci wskazywanym przez p

zwraca liczbę faktycznie odczytanych elementów

size_t fread(void *p, size_t s, size_t n, FILE *fp);

(3)

Informatyka 2 (EZ1E3012), studia niestacjonarne I st. dr inż. Jarosław Forenc

Rok akademicki 2020/2021, Pracownia nr 8 9/13

Zapisanie danych do pliku binarnego Zapisanie danych do pliku binarnego

#include <stdio.h>

int main(void) {

FILE *fp;

int x = 10, tab[5] = {1,2,3,4,5};

int x = 10, tab[5] = {1,2,3,4,5};

float y = 1.2345f;

fp = fopen("dane.dat","wb");

fwrite(&x,sizeof(int),1,fp);

fwrite(tab,sizeof(int),5,fp);

fwrite(tab,sizeof(tab),1,fp);

fwrite(&y,sizeof(float),1,fp);

fclose(fp);

return 0;

}

Informatyka 2 (EZ1E3012), studia niestacjonarne I st. dr inż. Jarosław Forenc

Rok akademicki 2020/2021, Pracownia nr 8 10/13

Zapisanie danych do pliku binarnego Zapisanie danych do pliku binarnego

Czterokrotne wywołanie funkcji fwrite()

fwrite(&x,sizeof(int),1,fp); // int x = 10;

fwrite(tab,sizeof(int),5,fp); // int tab[5] = {1,2,3,4,5};

fwrite(tab,sizeof(tab),1,fp); // int tab[5] = {1,2,3,4,5};

spowoduje zapisanie do pliku 48 bajtów:

fwrite(&y,sizeof(float),1,fp); // float y = 1.2345;

Informatyka 2 (EZ1E3012), studia niestacjonarne I st. dr inż. Jarosław Forenc

Rok akademicki 2020/2021, Pracownia nr 8 11/13

Oczytanie liczb z pliku binarnego Oczytanie liczb z pliku binarnego

#include <stdio.h>

int main(void) {

FILE *fp;

int x, ile = 0;

37 31 83 27 6 62

int x, ile = 0;

31

fp = fopen("liczby.dat","rb");

fread(&x,sizeof(int),1,fp);

while (!feof(fp)) {

ile++; printf("%d\n",x);

fread(&x,sizeof(int),1,fp);

}

fclose(fp);

printf("Odczytano: %d liczb\n",ile);

return 0;

}

31 50

Odczytano: 8 liczb

Informatyka 2 (EZ1E3012), studia niestacjonarne I st. dr inż. Jarosław Forenc

Rok akademicki 2020/2021, Pracownia nr 8 12/13

Typowy schemat odczytywania danych z pliku

Schemat przetwarzania pliku Schemat przetwarzania pliku

fread(&x,sizeof(int),1,fp);

while(!feof(fp))

fread(&x,sizeof(int),1,fp);

while(!feof(fp))

odczytanie danych z pliku sprawdzenie czy koniec pliku {

ile++; printf("%d\n",x);

fread(&x,sizeof(int),1,fp);

}

ile++; printf("%d\n",x);

odczytanie danych z pliku

przetworzenie danych

fread(&x,sizeof(int),1,fp);

(4)

Informatyka 2 (EZ1E3012), studia niestacjonarne I st. dr inż. Jarosław Forenc

Rok akademicki 2020/2021, Pracownia nr 8 13/13

Przykład: odczytanie liczb z pliku binarnego Przykład: odczytanie liczb z pliku binarnego

Po otwarciu pliku wskaźnik pozycji pliku pokazuje na jego początek

Po odczytaniu jednej liczby: fread(&x,sizeof(int),1,plik);

wskaźnik jest automatycznie przesuwany o sizeof(int) bajtów

Po odczytaniu kolejnej liczby: fread(&x,sizeof(int),1,plik);

wskaźnik jest ponownie przesuwany o sizeof(int) bajtów

Cytaty

Powiązane dokumenty

Informatyka 1 (EZ1E2008), studia niestacjonarne I stopnia dr inż.. - uznanie za standard

 Dla znaków z przedziału od U+0000 do U+FFFF używane jest jedno słowo, którego wartość jest jednocześnie kodem znaku w Unicode.  Dla znaków z wyższych pozycji używa

standard podaje jedynie minimalną liczbę bitów pozostawiając szczegóły implementacji producentom procesorów i kompilatorów szczegóły implementacji producentom procesorów

Informatyka 1 (EZ1E2008), studia niestacjonarne I stopnia dr inż..

Informatyka 1 (EZ1E2008), studia niestacjonarne I stopnia dr inż.

opisuje sposób deklarowania i inicjalizacji tablic dwuwymiarowych (macierzy) w języku C oraz metody wykonywania podstawowych operacji na tych tablicach. opisuje sposób

Informatyka 2 (ES1D300 017), studia stacjonarne I stopnia dr inż. stack) - struktur składająca się z elementów, z których każdy posiada tylko adres następnika. dostęp do

zamiast parametrów, podaje się słowo void lub nie wpisuje się nic jeśli występuje return, to nie może po nim znajdować się żadna wartość jeśli return nie występuje, to