• Nie Znaleziono Wyników

Elektrotechnika, semestr III, studia stacjonarne stacjonarne I stopnia I stopnia Rok akademicki 2020/2021

N/A
N/A
Protected

Academic year: 2021

Share "Elektrotechnika, semestr III, studia stacjonarne stacjonarne I stopnia I stopnia Rok akademicki 2020/2021"

Copied!
16
0
0

Pełen tekst

(1)

Politechnika Białostocka

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

Elektrotechnika, semestr III, studia

Elektrotechnika, semestr III, studia stacjonarne stacjonarne I stopnia I stopnia Rok akademicki 2020/2021

Rok akademicki 2020/2021 Rok akademicki 2020/2021 Rok akademicki 2020/2021

Pracownia nr Pracownia nr 11 11

dr inż. Jarosław Forenc

(2)

Operacje na plikach Operacje na plikach

 Strumień wiąże się z plikiem za pomocą otwarcia, zaś połączenie to jest przerywane przez zamknięcie strumienia

to jest przerywane przez zamknięcie strumienia

 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:

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()

(3)

Otwarcie pliku

Otwarcie pliku -- fopen fopen() ()

FILE* fopen(const char *fname, const char *mode);

fname - nazwa pliku, może zawierać całą ścieżkę dostępu do pliku

mode - tryb otwarcia:

"r" - odczyt

"w" - zapis - jeśli pliku nie ma to zostanie on utworzony, jeśli plik istnieje,

to jego poprzednia zawartość zostanie usunięta

"a" - zapis (dopisywanie) - dopisywanie danych na końcu istniejącego pliku,

jeśli pliku nie ma to zostanie utworzony jeśli pliku nie ma to zostanie utworzony

"t" - otwarcie w trybie tekstowym (domyślnie)

"b" - otwarcie w trybie binarnym

fopen() zwraca wskaźnik na strukturę FILE skojarzoną z otwartym plikiem

lub NULL, gdy otwarcie nie powiodło się

(4)

Otwarcie pliku

Otwarcie pliku -- fopen fopen() ()

 Otwarcie pliku w trybie tekstowym, tylko odczyt

 Otwarcie pliku w trybie binarnym, tylko zapis

FILE *fp;

fp = fopen("dane.txt","r");

fp = fopen("c:\\baza\\data.bin","wb");

 Otwarcie pliku w trybie tekstowym, tylko zapis

fp = fopen("wynik.txt","wt");

(5)

Zamknięcie pliku

Zamknięcie pliku -- fclose fclose() ()

int fclose(FILE *fp);

zamyka plik wskazywany przez fp

(6)

Przykład: otwarcie i zamknięcie pliku Przykład: 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");

( 1);

return (-1);

}

/* przetwarzanie pliku */

fclose(fp);

return 0;

}

(7)

Typy standardowych operacji wejścia

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

znakowe łańcuchowe

znakowe getc() - putc()

getchar() - putchar() fgetc() - fputc()

ungetc()

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

rekordowe (blokowe)

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

fread() - fwrite()

fgetpos() - fsetpos() fseek()

ftell()

rewind()

(8)

Typy standardowych operacji

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

znakowe łańcuchowe

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

znakowe getc() - putc()

fgetc() - fputc() ungetc()

łańcuchowe

fgets() - fputs()

rekordowe (blokowe)

scanf() - printf() sformatowane

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

fread() - fwrite()

fgetpos() - fsetpos() fseek()

ftell()

rewind() operacje na plikach

(9)

Znakowe operacje

Znakowe operacje wejścia wejścia--wyjścia (pliki) wyjścia (pliki)

int getc(FILE *fp);

pobiera (czyta) jeden znak ze strumienia fp i zwraca jego kod (jako int) lub EOF (gdy napotkano koniec pliku)

int fgetc(FILE *fp);

FILE *fp; int zn;

zn = getc(fp); // z pliku // z

zn = fgetc(fp); // z pliku

(10)

Znakowe operacje

Znakowe operacje wejścia wejścia--wyjścia (pliki) wyjścia (pliki)

int putc(int znak, FILE *fp);

wpisuje znak do otwartego strumienia fp int fputc(int znak, FILE *fp);

FILE *fp; int zn = 'a';

putc(zn,fp); // do pliku

fputc(zn,fp); // do pliku

fputc(zn,fp); // do pliku

putc('x',fp); // do pliku

fputc('x',fp); // do pliku

(11)

Łańcuchowe operacje

Łańcuchowe operacje wejścia wejścia--wyjścia (pliki) wyjścia (pliki)

char* fgets(char *buf, int max, FILE *fp);

czyta znaki z otwartego strumienia fp i zapisuje je w tablicy buf;

przerywa pobieranie znaków po odczytaniu '\n' lub max-1 znaków;

zwraca NULL po napotkaniu końca pliku

FILE *fp; char txt[20];

fgets(txt,20,fp); // z pliku

(12)

Łańcuchowe operacje

Łańcuchowe operacje wejścia wejścia--wyjścia (pliki) wyjścia (pliki)

int fputs(const char *buf, FILE *fp);

wpisuje znaki z tablicy buf do otwartego strumienia fp;

nie dołącza znaku końca wiersza '\n'

FILE *fp; char txt[20] = "Witaj swiecie";

fputs(txt, fp); // do pliku

fputs("Hello World", fp); // do pliku

(13)

Sformatowane operacje

Sformatowane operacje wejścia wejścia--wyjścia (pliki) wyjścia (pliki)

int fscanf(FILE *fp, const char *format,...);

czyta dane z otwartego strumienia fp (najczęściej pliku)

FILE *fp; int x; float y;

fscanf(fp,"%d %f",&x,&y); // z pliku

int fprintf(FILE *fp const char *format,...);

wyprowadza dane do otwartego strumienia fp (najczęściej pliku) int fprintf(FILE *fp, const char *format,...);

FILE *fp; char txt[20] = "Witaj swiecie";

fprintf(fp,"%s\n",txt); // do pliku

fprintf(fp,"Hello World"); // do pliku

(14)

Wyświetlenie

Wyświetlenie pliku tekstowego pliku tekstowego

#include <stdio.h>

int main(void) {

FILE *fp;

int znak;

fp = fopen("test.txt","r");

znak = getc(fp);

while(znak!=EOF) {

printf("%c",znak);

znak = getc(fp);

}

fclose(fp);

return 0;

}

(15)

 Typowy schemat odczytywania danych z pliku

Schemat przetwarzania pliku Schemat przetwarzania pliku

znak = getc(fp);

while(znak!=EOF)

{

printf("%c",znak);

znak = getc(fp);

znak = getc(fp);

znak = getc(fp);

printf("%c",znak);

while(znak!=EOF)

odczytanie danych z pliku

odczytanie danych z pliku przetworzenie danych

sprawdzenie czy koniec pliku

 Krótszy zapis:

}

while((znak=getc(fp))!=EOF)

printf("%c",znak);

(16)

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

Funkcje Metoda

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

fgets() zwracana wartość: NULL

fscanf() wywołanie funkcji: feof()

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)

int feof(FILE *fp);

Cytaty

Powiązane dokumenty

x++ postinkrementacji wartość zmiennej jest modyfikowana po użyciu jej poprzedniej wartości..

 Bardzo popularny jest 80-bitowy format podwójnej rozszerzonej precyzji (Extended Precision) wprowadzony przez firmę Intel.  W 80-bitowym

Informatyka 1 (ES1E2009), studia stacjonarne 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

Pamięć a zmienne w programie Pamięć a zmienne w programie zmienne automatyczne (auto) zmienne rejestrowe (register) zmienne zewnętrzne (extern) zmienne statyczne (static)..

system operacyjny tworząc nowy proces, tworzy blok kontrolny procesu po czym wprowadza proces do systemu jako nie uruchomiony. w pewnym momencie aktualnie wykonywany proces