Biblioteka standardowa - operacje wejścia/wyjścia Przemysław Gawroński D-10, p. 234 Wykład 6 15 stycznia 2019 (Wykład 6) Biblioteka standardowa - operacje wejścia/wyjścia 15 stycznia 2019 1 / 14
Outline 1 Operacje wejścia/wyjścia (Wykład 6) Biblioteka standardowa - operacje wejścia/wyjścia 15 stycznia 2019 2 / 14
stdio.h - Operacje wejścia/wyjścia Plik - jednostka logiczna przechowywania danych w pamięci masowej. (Wykład 6) Biblioteka standardowa - operacje wejścia/wyjścia 15 stycznia 2019 3 / 14
stdio.h - Operacje wejścia/wyjścia Plik - jednostka logiczna przechowywania danych w pamięci masowej. Plik - ciąg (zbiór) danych identyfikowany nazwą, o skończonej długości, posiadający szereg atrybutów i stanowiący dla systemu operacyjnego całość. (Wykład 6) Biblioteka standardowa - operacje wejścia/wyjścia 15 stycznia 2019 3 / 14
stdio.h - Operacje wejścia/wyjścia Plik - jednostka logiczna przechowywania danych w pamięci masowej. Plik - ciąg (zbiór) danych identyfikowany nazwą, o skończonej długości, posiadający szereg atrybutów i stanowiący dla systemu operacyjnego całość. Plik binarny plik zawierający dowolny ciąg danych zakodowany w systemie binarnym. Podstawowa jednostka danych to 1 bajt. (Wykład 6) Biblioteka standardowa - operacje wejścia/wyjścia 15 stycznia 2019 3 / 14
stdio.h - Operacje wejścia/wyjścia Plik - jednostka logiczna przechowywania danych w pamięci masowej. Plik - ciąg (zbiór) danych identyfikowany nazwą, o skończonej długości, posiadający szereg atrybutów i stanowiący dla systemu operacyjnego całość. Plik binarny plik zawierający dowolny ciąg danych zakodowany w systemie binarnym. Podstawowa jednostka danych to 1 bajt. Pliki binarne to wszystkie pliki, które nie są plikami tekstowymi. (Wykład 6) Biblioteka standardowa - operacje wejścia/wyjścia 15 stycznia 2019 3 / 14
stdio.h - Operacje wejścia/wyjścia Plik - jednostka logiczna przechowywania danych w pamięci masowej. Plik - ciąg (zbiór) danych identyfikowany nazwą, o skończonej długości, posiadający szereg atrybutów i stanowiący dla systemu operacyjnego całość. Plik binarny plik zawierający dowolny ciąg danych zakodowany w systemie binarnym. Podstawowa jednostka danych to 1 bajt. Pliki binarne to wszystkie pliki, które nie są plikami tekstowymi. Plik tekstowy - plik zawierający tekst zapisany w ustalonym sposobie kodowania znaków drukarskich (np. ASCII, Unicode) wraz z kodami sterującymi, w tym także kod znaku końca pliku EOF (end-of-file) CTRL-Z. (Wykład 6) Biblioteka standardowa - operacje wejścia/wyjścia 15 stycznia 2019 3 / 14
stdio.h - Operacje wejścia/wyjścia Plik - jednostka logiczna przechowywania danych w pamięci masowej. Plik - ciąg (zbiór) danych identyfikowany nazwą, o skończonej długości, posiadający szereg atrybutów i stanowiący dla systemu operacyjnego całość. Plik binarny plik zawierający dowolny ciąg danych zakodowany w systemie binarnym. Podstawowa jednostka danych to 1 bajt. Pliki binarne to wszystkie pliki, które nie są plikami tekstowymi. Plik tekstowy - plik zawierający tekst zapisany w ustalonym sposobie kodowania znaków drukarskich (np. ASCII, Unicode) wraz z kodami sterującymi, w tym także kod znaku końca pliku EOF (end-of-file) CTRL-Z. Plik tekstowy to ciąg znaków z podziałem na wiersze. Podstawowa jednostka danych to jeden znak. (Wykład 6) Biblioteka standardowa - operacje wejścia/wyjścia 15 stycznia 2019 3 / 14
stdio.h - Operacje wejścia/wyjścia Plik - jednostka logiczna przechowywania danych w pamięci masowej. Plik - ciąg (zbiór) danych identyfikowany nazwą, o skończonej długości, posiadający szereg atrybutów i stanowiący dla systemu operacyjnego całość. Plik binarny plik zawierający dowolny ciąg danych zakodowany w systemie binarnym. Podstawowa jednostka danych to 1 bajt. Pliki binarne to wszystkie pliki, które nie są plikami tekstowymi. Plik tekstowy - plik zawierający tekst zapisany w ustalonym sposobie kodowania znaków drukarskich (np. ASCII, Unicode) wraz z kodami sterującymi, w tym także kod znaku końca pliku EOF (end-of-file) CTRL-Z. Plik tekstowy to ciąg znaków z podziałem na wiersze. Podstawowa jednostka danych to jeden znak. Jeden znak zakodowany w standardzie ASCII to 1 bajt. (Wykład 6) Biblioteka standardowa - operacje wejścia/wyjścia 15 stycznia 2019 3 / 14
stdio.h - Operacje wejścia/wyjścia Plik - jednostka logiczna przechowywania danych w pamięci masowej. Plik - ciąg (zbiór) danych identyfikowany nazwą, o skończonej długości, posiadający szereg atrybutów i stanowiący dla systemu operacyjnego całość. Plik binarny plik zawierający dowolny ciąg danych zakodowany w systemie binarnym. Podstawowa jednostka danych to 1 bajt. Pliki binarne to wszystkie pliki, które nie są plikami tekstowymi. Plik tekstowy - plik zawierający tekst zapisany w ustalonym sposobie kodowania znaków drukarskich (np. ASCII, Unicode) wraz z kodami sterującymi, w tym także kod znaku końca pliku EOF (end-of-file) CTRL-Z. Plik tekstowy to ciąg znaków z podziałem na wiersze. Podstawowa jednostka danych to jeden znak. Jeden znak zakodowany w standardzie ASCII to 1 bajt. Jeden znak zakodowany w standardzie Unicode to dwa bajty lub więcej. (Wykład 6) Biblioteka standardowa - operacje wejścia/wyjścia 15 stycznia 2019 3 / 14
stdio.h - Operacje wejścia/wyjścia Koniec linii (end of line, EOL) znak lub sekwencja znaków oznaczająca zakończenie wiersza w pliku tekstowym. (Wykład 6) Biblioteka standardowa - operacje wejścia/wyjścia 15 stycznia 2019 4 / 14
stdio.h - Operacje wejścia/wyjścia Koniec linii (end of line, EOL) znak lub sekwencja znaków oznaczająca zakończenie wiersza w pliku tekstowym. W systemach opartych na kodowaniu ASCII są to kombinacje kodów CR (carriage return 0x0D) i LF (line feed 0x0A): (Wykład 6) Biblioteka standardowa - operacje wejścia/wyjścia 15 stycznia 2019 4 / 14
stdio.h - Operacje wejścia/wyjścia Koniec linii (end of line, EOL) znak lub sekwencja znaków oznaczająca zakończenie wiersza w pliku tekstowym. W systemach opartych na kodowaniu ASCII są to kombinacje kodów CR (carriage return 0x0D) i LF (line feed 0x0A): LF - \n w systemach UNIX/Linux (Wykład 6) Biblioteka standardowa - operacje wejścia/wyjścia 15 stycznia 2019 4 / 14
stdio.h - Operacje wejścia/wyjścia Koniec linii (end of line, EOL) znak lub sekwencja znaków oznaczająca zakończenie wiersza w pliku tekstowym. W systemach opartych na kodowaniu ASCII są to kombinacje kodów CR (carriage return 0x0D) i LF (line feed 0x0A): LF - \n w systemach UNIX/Linux CRLF - \r\n w systemach Windows (Wykład 6) Biblioteka standardowa - operacje wejścia/wyjścia 15 stycznia 2019 4 / 14
stdio.h - Operacje wejścia/wyjścia Koniec linii (end of line, EOL) znak lub sekwencja znaków oznaczająca zakończenie wiersza w pliku tekstowym. W systemach opartych na kodowaniu ASCII są to kombinacje kodów CR (carriage return 0x0D) i LF (line feed 0x0A): LF - \n w systemach UNIX/Linux CRLF - \r\n w systemach Windows CR - \r w systemach MacOS (Wykład 6) Biblioteka standardowa - operacje wejścia/wyjścia 15 stycznia 2019 4 / 14
stdio.h - Operacje wejścia/wyjścia W języku C strumień oznacza dowolne źródło wejścia lub wyjścia. (Wykład 6) Biblioteka standardowa - operacje wejścia/wyjścia 15 stycznia 2019 5 / 14
stdio.h - Operacje wejścia/wyjścia W języku C strumień oznacza dowolne źródło wejścia lub wyjścia. W języku C zdefiniowano standardowe strumienie: (Wykład 6) Biblioteka standardowa - operacje wejścia/wyjścia 15 stycznia 2019 5 / 14
stdio.h - Operacje wejścia/wyjścia W języku C strumień oznacza dowolne źródło wejścia lub wyjścia. W języku C zdefiniowano standardowe strumienie: stdin - standardowe wejście - klawiatura. (Wykład 6) Biblioteka standardowa - operacje wejścia/wyjścia 15 stycznia 2019 5 / 14
stdio.h - Operacje wejścia/wyjścia W języku C strumień oznacza dowolne źródło wejścia lub wyjścia. W języku C zdefiniowano standardowe strumienie: stdin - standardowe wejście - klawiatura. stdout - standardowe wyjście - ekran. (Wykład 6) Biblioteka standardowa - operacje wejścia/wyjścia 15 stycznia 2019 5 / 14
stdio.h - Operacje wejścia/wyjścia W języku C strumień oznacza dowolne źródło wejścia lub wyjścia. W języku C zdefiniowano standardowe strumienie: stdin - standardowe wejście - klawiatura. stdout - standardowe wyjście - ekran. stderr - standardowe wyjście błędów - ekran (Wykład 6) Biblioteka standardowa - operacje wejścia/wyjścia 15 stycznia 2019 5 / 14
stdio.h - Operacje wejścia/wyjścia W języku C strumień oznacza dowolne źródło wejścia lub wyjścia. W języku C zdefiniowano standardowe strumienie: stdin - standardowe wejście - klawiatura. stdout - standardowe wyjście - ekran. stderr - standardowe wyjście błędów - ekran Przekierowanie wejścia./a.out < input.dat (Wykład 6) Biblioteka standardowa - operacje wejścia/wyjścia 15 stycznia 2019 5 / 14
stdio.h - Operacje wejścia/wyjścia W języku C strumień oznacza dowolne źródło wejścia lub wyjścia. W języku C zdefiniowano standardowe strumienie: stdin - standardowe wejście - klawiatura. stdout - standardowe wyjście - ekran. stderr - standardowe wyjście błędów - ekran Przekierowanie wejścia./a.out < input.dat Przekierowanie wyjścia./a.out > output.dat (Wykład 6) Biblioteka standardowa - operacje wejścia/wyjścia 15 stycznia 2019 5 / 14
stdio.h - Operacje wejścia/wyjścia W języku C strumień oznacza dowolne źródło wejścia lub wyjścia. W języku C zdefiniowano standardowe strumienie: stdin - standardowe wejście - klawiatura. stdout - standardowe wyjście - ekran. stderr - standardowe wyjście błędów - ekran Przekierowanie wejścia./a.out < input.dat Przekierowanie wyjścia./a.out > output.dat Przekierowanie wyjścia i wyjścia./a.out >out.dat <in.dat (Wykład 6) Biblioteka standardowa - operacje wejścia/wyjścia 15 stycznia 2019 5 / 14
stdio.h - Operacje wejścia/wyjścia W języku C strumień oznacza dowolne źródło wejścia lub wyjścia. W języku C zdefiniowano standardowe strumienie: stdin - standardowe wejście - klawiatura. stdout - standardowe wyjście - ekran. stderr - standardowe wyjście błędów - ekran Przekierowanie wejścia./a.out < input.dat Przekierowanie wyjścia./a.out > output.dat Przekierowanie wyjścia i wyjścia./a.out >out.dat <in.dat Przekierowanie wejścia błędów./a.out 2> err.dat (Wykład 6) Biblioteka standardowa - operacje wejścia/wyjścia 15 stycznia 2019 5 / 14
stdio.h - Operacje wejścia/wyjścia - fopen() FILE *fopen (const char *fname, const char *mode); - otwiera plik o nazwie fname w trybie mode i zwraca związany z nim strumień. Typy dozwolonych operacji na pliku określa wartość parametru mode. Nazwa pliku musi być łańcuchem. (Wykład 6) Biblioteka standardowa - operacje wejścia/wyjścia 15 stycznia 2019 6 / 14
stdio.h - Operacje wejścia/wyjścia - fopen() FILE *fopen (const char *fname, const char *mode); - otwiera plik o nazwie fname w trybie mode i zwraca związany z nim strumień. Typy dozwolonych operacji na pliku określa wartość parametru mode. Nazwa pliku musi być łańcuchem. Dopuszczalne wartości parametru mode: (Wykład 6) Biblioteka standardowa - operacje wejścia/wyjścia 15 stycznia 2019 6 / 14
stdio.h - Operacje wejścia/wyjścia - fopen() FILE *fopen (const char *fname, const char *mode); - otwiera plik o nazwie fname w trybie mode i zwraca związany z nim strumień. Typy dozwolonych operacji na pliku określa wartość parametru mode. Nazwa pliku musi być łańcuchem. Dopuszczalne wartości parametru mode: r - otwarcie pliku tekstowego do odczytu, (Wykład 6) Biblioteka standardowa - operacje wejścia/wyjścia 15 stycznia 2019 6 / 14
stdio.h - Operacje wejścia/wyjścia - fopen() FILE *fopen (const char *fname, const char *mode); - otwiera plik o nazwie fname w trybie mode i zwraca związany z nim strumień. Typy dozwolonych operacji na pliku określa wartość parametru mode. Nazwa pliku musi być łańcuchem. Dopuszczalne wartości parametru mode: r - otwarcie pliku tekstowego do odczytu, w - utworzenie pliku tekstowego do zapisu, (Wykład 6) Biblioteka standardowa - operacje wejścia/wyjścia 15 stycznia 2019 6 / 14
stdio.h - Operacje wejścia/wyjścia - fopen() FILE *fopen (const char *fname, const char *mode); - otwiera plik o nazwie fname w trybie mode i zwraca związany z nim strumień. Typy dozwolonych operacji na pliku określa wartość parametru mode. Nazwa pliku musi być łańcuchem. Dopuszczalne wartości parametru mode: r - otwarcie pliku tekstowego do odczytu, w - utworzenie pliku tekstowego do zapisu, a - otwarcie pliku tekstowego do dopisywania, (Wykład 6) Biblioteka standardowa - operacje wejścia/wyjścia 15 stycznia 2019 6 / 14
stdio.h - Operacje wejścia/wyjścia - fopen() FILE *fopen (const char *fname, const char *mode); - otwiera plik o nazwie fname w trybie mode i zwraca związany z nim strumień. Typy dozwolonych operacji na pliku określa wartość parametru mode. Nazwa pliku musi być łańcuchem. Dopuszczalne wartości parametru mode: r - otwarcie pliku tekstowego do odczytu, w - utworzenie pliku tekstowego do zapisu, a - otwarcie pliku tekstowego do dopisywania, rb - otwarcie pliku binarnego do odczytu, (Wykład 6) Biblioteka standardowa - operacje wejścia/wyjścia 15 stycznia 2019 6 / 14
stdio.h - Operacje wejścia/wyjścia - fopen() FILE *fopen (const char *fname, const char *mode); - otwiera plik o nazwie fname w trybie mode i zwraca związany z nim strumień. Typy dozwolonych operacji na pliku określa wartość parametru mode. Nazwa pliku musi być łańcuchem. Dopuszczalne wartości parametru mode: r - otwarcie pliku tekstowego do odczytu, w - utworzenie pliku tekstowego do zapisu, a - otwarcie pliku tekstowego do dopisywania, rb - otwarcie pliku binarnego do odczytu, wb - utworzenie pliku binarnego do zapisu, (Wykład 6) Biblioteka standardowa - operacje wejścia/wyjścia 15 stycznia 2019 6 / 14
stdio.h - Operacje wejścia/wyjścia - fopen() FILE *fopen (const char *fname, const char *mode); - otwiera plik o nazwie fname w trybie mode i zwraca związany z nim strumień. Typy dozwolonych operacji na pliku określa wartość parametru mode. Nazwa pliku musi być łańcuchem. Dopuszczalne wartości parametru mode: r - otwarcie pliku tekstowego do odczytu, w - utworzenie pliku tekstowego do zapisu, a - otwarcie pliku tekstowego do dopisywania, rb - otwarcie pliku binarnego do odczytu, wb - utworzenie pliku binarnego do zapisu, ab - otwarcie pliku binarnego do dopisywania, (Wykład 6) Biblioteka standardowa - operacje wejścia/wyjścia 15 stycznia 2019 6 / 14
stdio.h - Operacje wejścia/wyjścia - fopen() Dopuszczalne wartości parametru mode: (Wykład 6) Biblioteka standardowa - operacje wejścia/wyjścia 15 stycznia 2019 7 / 14
stdio.h - Operacje wejścia/wyjścia - fopen() Dopuszczalne wartości parametru mode: r+ - otwarcie pliku tekstowego do odczytu/zapisu, zaczynamy operacje na początku pliku. (Wykład 6) Biblioteka standardowa - operacje wejścia/wyjścia 15 stycznia 2019 7 / 14
stdio.h - Operacje wejścia/wyjścia - fopen() Dopuszczalne wartości parametru mode: r+ - otwarcie pliku tekstowego do odczytu/zapisu, zaczynamy operacje na początku pliku. w+ - utworzenie pliku tekstowego do odczytu/zapisu, istniejący plik jest usuwany. (Wykład 6) Biblioteka standardowa - operacje wejścia/wyjścia 15 stycznia 2019 7 / 14
stdio.h - Operacje wejścia/wyjścia - fopen() Dopuszczalne wartości parametru mode: r+ - otwarcie pliku tekstowego do odczytu/zapisu, zaczynamy operacje na początku pliku. w+ - utworzenie pliku tekstowego do odczytu/zapisu, istniejący plik jest usuwany. a+ - otwarcie pliku tekstowego do odczytu/dopisywania, dodajemy na koniec jeśli plik istnieje (Wykład 6) Biblioteka standardowa - operacje wejścia/wyjścia 15 stycznia 2019 7 / 14
stdio.h - Operacje wejścia/wyjścia - fopen() Dopuszczalne wartości parametru mode: r+ - otwarcie pliku tekstowego do odczytu/zapisu, zaczynamy operacje na początku pliku. w+ - utworzenie pliku tekstowego do odczytu/zapisu, istniejący plik jest usuwany. a+ - otwarcie pliku tekstowego do odczytu/dopisywania, dodajemy na koniec jeśli plik istnieje rb+ - otwarcie pliku binarnego do odczytu/zapisu, (Wykład 6) Biblioteka standardowa - operacje wejścia/wyjścia 15 stycznia 2019 7 / 14
stdio.h - Operacje wejścia/wyjścia - fopen() Dopuszczalne wartości parametru mode: r+ - otwarcie pliku tekstowego do odczytu/zapisu, zaczynamy operacje na początku pliku. w+ - utworzenie pliku tekstowego do odczytu/zapisu, istniejący plik jest usuwany. a+ - otwarcie pliku tekstowego do odczytu/dopisywania, dodajemy na koniec jeśli plik istnieje rb+ - otwarcie pliku binarnego do odczytu/zapisu, wb+ - utworzenie pliku tekstowego do odczytu/zapisu, (Wykład 6) Biblioteka standardowa - operacje wejścia/wyjścia 15 stycznia 2019 7 / 14
stdio.h - Operacje wejścia/wyjścia - fopen() Dopuszczalne wartości parametru mode: r+ - otwarcie pliku tekstowego do odczytu/zapisu, zaczynamy operacje na początku pliku. w+ - utworzenie pliku tekstowego do odczytu/zapisu, istniejący plik jest usuwany. a+ - otwarcie pliku tekstowego do odczytu/dopisywania, dodajemy na koniec jeśli plik istnieje rb+ - otwarcie pliku binarnego do odczytu/zapisu, wb+ - utworzenie pliku tekstowego do odczytu/zapisu, ab+ - otwarcie pliku tekstowego do odczytu/dopisywania, (Wykład 6) Biblioteka standardowa - operacje wejścia/wyjścia 15 stycznia 2019 7 / 14
stdio.h - Operacje wejścia/wyjścia - fopen() Dopuszczalne wartości parametru mode: r+ - otwarcie pliku tekstowego do odczytu/zapisu, zaczynamy operacje na początku pliku. w+ - utworzenie pliku tekstowego do odczytu/zapisu, istniejący plik jest usuwany. a+ - otwarcie pliku tekstowego do odczytu/dopisywania, dodajemy na koniec jeśli plik istnieje rb+ - otwarcie pliku binarnego do odczytu/zapisu, wb+ - utworzenie pliku tekstowego do odczytu/zapisu, ab+ - otwarcie pliku tekstowego do odczytu/dopisywania, Odczytywanie z pliku otwartego do odczytu/zapisu związane jest z koniecznością użycia jednej z funkcji: fflush(), fseek(), fsetpos() lub rewind(). (Wykład 6) Biblioteka standardowa - operacje wejścia/wyjścia 15 stycznia 2019 7 / 14
stdio.h - Operacje wejścia/wyjścia - fopen() Dopuszczalne wartości parametru mode: r+ - otwarcie pliku tekstowego do odczytu/zapisu, zaczynamy operacje na początku pliku. w+ - utworzenie pliku tekstowego do odczytu/zapisu, istniejący plik jest usuwany. a+ - otwarcie pliku tekstowego do odczytu/dopisywania, dodajemy na koniec jeśli plik istnieje rb+ - otwarcie pliku binarnego do odczytu/zapisu, wb+ - utworzenie pliku tekstowego do odczytu/zapisu, ab+ - otwarcie pliku tekstowego do odczytu/dopisywania, Odczytywanie z pliku otwartego do odczytu/zapisu związane jest z koniecznością użycia jednej z funkcji: fflush(), fseek(), fsetpos() lub rewind(). Nie można wykonać operacji zapisu bezpośrednio po operacji odczytu bez uprzedniego wywołania jednej z powyższych funkcji, z wyjątkiem sytuacji, w której w wyniku operacji odczytu osiągnięty został koniec pliku. (Wykład 6) Biblioteka standardowa - operacje wejścia/wyjścia 15 stycznia 2019 7 / 14
stdio.h - Operacje wejścia/wyjścia - fopen() Jeśli funkcji fopen() uda się otworzyć określony plik wówczas zwraca wskaźnik do typu FILE. Jeśli pliku nie można otworzyć zwraca wskaźnik zerowy (NULL). (Wykład 6) Biblioteka standardowa - operacje wejścia/wyjścia 15 stycznia 2019 8 / 14
stdio.h - Operacje wejścia/wyjścia - fopen() Jeśli funkcji fopen() uda się otworzyć określony plik wówczas zwraca wskaźnik do typu FILE. Jeśli pliku nie można otworzyć zwraca wskaźnik zerowy (NULL). Przykład. FILE *fp = fopen (" test. dat ", "w"); if (! fp){ printf (" Nie mozna utworzyc pliku.\n"); exit ( EXIT_FAILURE ); }... // zamykamy plik } (Wykład 6) Biblioteka standardowa - operacje wejścia/wyjścia 15 stycznia 2019 8 / 14
stdio.h - Operacje wejścia/wyjścia - fopen() Jeśli funkcji fopen() uda się otworzyć określony plik wówczas zwraca wskaźnik do typu FILE. Jeśli pliku nie można otworzyć zwraca wskaźnik zerowy (NULL). Przykład. FILE *fp = fopen (" test. dat ", "w"); if (! fp){ printf (" Nie mozna utworzyc pliku.\n"); exit ( EXIT_FAILURE ); }... // zamykamy plik } Jeżeli otworzymy do zapisu istniejący plik to cała jego zawartość zostanie stracona. (Wykład 6) Biblioteka standardowa - operacje wejścia/wyjścia 15 stycznia 2019 8 / 14
stdio.h - Operacje wejścia/wyjścia - fopen() Jeśli funkcji fopen() uda się otworzyć określony plik wówczas zwraca wskaźnik do typu FILE. Jeśli pliku nie można otworzyć zwraca wskaźnik zerowy (NULL). Przykład. FILE *fp = fopen (" test. dat ", "w"); if (! fp){ printf (" Nie mozna utworzyc pliku.\n"); exit ( EXIT_FAILURE ); }... // zamykamy plik } Jeżeli otworzymy do zapisu istniejący plik to cała jego zawartość zostanie stracona. Plik, który ma być otwarty do odczytu musi istnieć. (Wykład 6) Biblioteka standardowa - operacje wejścia/wyjścia 15 stycznia 2019 8 / 14
stdio.h - Operacje wejścia/wyjścia - fopen() Jeśli funkcji fopen() uda się otworzyć określony plik wówczas zwraca wskaźnik do typu FILE. Jeśli pliku nie można otworzyć zwraca wskaźnik zerowy (NULL). Przykład. FILE *fp = fopen (" test. dat ", "w"); if (! fp){ printf (" Nie mozna utworzyc pliku.\n"); exit ( EXIT_FAILURE ); }... // zamykamy plik } Jeżeli otworzymy do zapisu istniejący plik to cała jego zawartość zostanie stracona. Plik, który ma być otwarty do odczytu musi istnieć. Jednocześnie można otworzyć do FOPEN MAX plików, definicja znajduje (Wykład 6) się w stdio.h. Biblioteka standardowa - operacje wejścia/wyjścia 15 stycznia 2019 8 / 14
stdio.h - Operacje wejścia/wyjścia - fclose() int fclose(file *stream); - zamyka strumień stream i opróżnia jego bufor. (Wykład 6) Biblioteka standardowa - operacje wejścia/wyjścia 15 stycznia 2019 9 / 14
stdio.h - Operacje wejścia/wyjścia - fclose() int fclose(file *stream); - zamyka strumień stream i opróżnia jego bufor. Po wywołaniu funkcji fclose() strumień przestaje być związany z plikiem i wszystkie automatycznie alokowane bufory są zwalniane. (Wykład 6) Biblioteka standardowa - operacje wejścia/wyjścia 15 stycznia 2019 9 / 14
stdio.h - Operacje wejścia/wyjścia - fclose() int fclose(file *stream); - zamyka strumień stream i opróżnia jego bufor. Po wywołaniu funkcji fclose() strumień przestaje być związany z plikiem i wszystkie automatycznie alokowane bufory są zwalniane. Zwracaną wartością w przypadku poprawnego zamknięcia pliku jest zero. W przypadku niepowodzenia zawracana jest wartość EOF. (Wykład 6) Biblioteka standardowa - operacje wejścia/wyjścia 15 stycznia 2019 9 / 14
stdio.h - Operacje wejścia/wyjścia - fclose() int fclose(file *stream); - zamyka strumień stream i opróżnia jego bufor. Po wywołaniu funkcji fclose() strumień przestaje być związany z plikiem i wszystkie automatycznie alokowane bufory są zwalniane. Zwracaną wartością w przypadku poprawnego zamknięcia pliku jest zero. W przypadku niepowodzenia zawracana jest wartość EOF. Błędem jest próba zamknięcia pliku, który już został zamknięty. (Wykład 6) Biblioteka standardowa - operacje wejścia/wyjścia 15 stycznia 2019 9 / 14
stdio.h - Operacje wejścia/wyjścia - fclose() int fclose(file *stream); - zamyka strumień stream i opróżnia jego bufor. Po wywołaniu funkcji fclose() strumień przestaje być związany z plikiem i wszystkie automatycznie alokowane bufory są zwalniane. Zwracaną wartością w przypadku poprawnego zamknięcia pliku jest zero. W przypadku niepowodzenia zawracana jest wartość EOF. Błędem jest próba zamknięcia pliku, który już został zamknięty. char fname []= " test. dat "; FILE *fp = fopen ( fname, "r"); if (! fp){ printf (" Nie mozna otworzyc : %s.\n", fname ); exit ( EXIT_FAILURE ); }... fclose (fp); } (Wykład 6) Biblioteka standardowa - operacje wejścia/wyjścia 15 stycznia 2019 9 / 14
stdio.h - Operacje wejścia/wyjścia - fprintf() int fprintf(file *stream, const char *format,...); - wypisuje do strumienia stream wartości argumentów wymienione na liście argumentów zgodnie z parametrem format. (Wykład 6) Biblioteka standardowa - operacje wejścia/wyjścia 15 stycznia 2019 10 / 14
stdio.h - Operacje wejścia/wyjścia - fprintf() int fprintf(file *stream, const char *format,...); - wypisuje do strumienia stream wartości argumentów wymienione na liście argumentów zgodnie z parametrem format. Zwracana wartość jest równa liczbie wypisanych znaków, w przypadku błędu funkcja zwraca wartość ujemną. Działanie łańcucha formatującego jest identyczne jak w przypadku funkcji printf(). (Wykład 6) Biblioteka standardowa - operacje wejścia/wyjścia 15 stycznia 2019 10 / 14
stdio.h - Operacje wejścia/wyjścia - fprintf() int fprintf(file *stream, const char *format,...); - wypisuje do strumienia stream wartości argumentów wymienione na liście argumentów zgodnie z parametrem format. Zwracana wartość jest równa liczbie wypisanych znaków, w przypadku błędu funkcja zwraca wartość ujemną. Działanie łańcucha formatującego jest identyczne jak w przypadku funkcji printf(). FILE * pfile = fopen (" myfile. txt ", "w"); if( pfile ){ double *pt=tab ; for (; pt < tab + SIZE ; pt ++) fprintf ( pfile, "%lf\n", *pt); fclose ( pfile ); } (Wykład 6) Biblioteka standardowa - operacje wejścia/wyjścia 15 stycznia 2019 10 / 14
stdio.h - Operacje wejścia/wyjścia - fprintf() printf ("%lf\n", 12.34) ; fprintf ( stdout, "%lf\n", 12.34) ; fprintf ( pfile, "%lf\n", 12.34) ; sprintf ( buffer, "%lf\n", 12.34) ; (Wykład 6) Biblioteka standardowa - operacje wejścia/wyjścia 15 stycznia 2019 11 / 14
stdio.h - Operacje wejścia/wyjścia - fprintf() printf ("%lf\n", 12.34) ; fprintf ( stdout, "%lf\n", 12.34) ; fprintf ( pfile, "%lf\n", 12.34) ; sprintf ( buffer, "%lf\n", 12.34) ; scanf ("%lf", &x); fscanf ( stdin, "%lf", &x); fscanf ( pfile, "%lf", &x); sscanf ( buffer, "%lf", &x); (Wykład 6) Biblioteka standardowa - operacje wejścia/wyjścia 15 stycznia 2019 11 / 14
stdio.h - Operacje wejścia/wyjścia - fprintf() int fscanf(file *stream, const char *format,...); - odczytuje dane ze strumienia stream zgodnie z parametrem format. (Wykład 6) Biblioteka standardowa - operacje wejścia/wyjścia 15 stycznia 2019 12 / 14
stdio.h - Operacje wejścia/wyjścia - fprintf() int fscanf(file *stream, const char *format,...); - odczytuje dane ze strumienia stream zgodnie z parametrem format. Zwracana wartość jest równa liczbie argumentów, którym udało się przypisać wartość, Działanie łańcucha formatującego jest identyczne jak w przypadku funkcji scanf(). (Wykład 6) Biblioteka standardowa - operacje wejścia/wyjścia 15 stycznia 2019 12 / 14
stdio.h - Operacje wejścia/wyjścia - fprintf() int fscanf(file *stream, const char *format,...); - odczytuje dane ze strumienia stream zgodnie z parametrem format. Zwracana wartość jest równa liczbie argumentów, którym udało się przypisać wartość, Działanie łańcucha formatującego jest identyczne jak w przypadku funkcji scanf(). FILE * pfile = fopen (" myfile. txt ", "r"); if( pfile ){ double *pt=tab ; for (; pt < tab + SIZE ; pt ++) fscanf ( pfile, "%lf", pt); fclose ( pfile ); } (Wykład 6) Biblioteka standardowa - operacje wejścia/wyjścia 15 stycznia 2019 12 / 14
stdio.h - Operacje wejścia/wyjścia - fwrite() size t fwrite(const void *ptr, size t size, size t count, FILE *stream ); - zapisuje tablicę ptr do strumienia (pliku) binarnego stream. size rozmiar komórki tablicy ptr. count ilość elementów tablicy ptr. (Wykład 6) Biblioteka standardowa - operacje wejścia/wyjścia 15 stycznia 2019 13 / 14
stdio.h - Operacje wejścia/wyjścia - fwrite() size t fwrite(const void *ptr, size t size, size t count, FILE *stream ); - zapisuje tablicę ptr do strumienia (pliku) binarnego stream. size rozmiar komórki tablicy ptr. count ilość elementów tablicy ptr. float tab [56];... FILE * pfile = fopen (" myfile. txt ", "wb"); if( pfile ){ fwrite (tab, sizeof ( float ), sizeof ( tab )/ sizeof (* tab ), pfile ); fclose ( pfile ); } (Wykład 6) Biblioteka standardowa - operacje wejścia/wyjścia 15 stycznia 2019 13 / 14
stdio.h - Operacje wejścia/wyjścia - fread() size t fread(void *ptr, size t size, size t count, FILE *stream ); - odczytuje ze strumienia (pliku) binarnego stream dane do tablicy ptr. size rozmiar komórki tablicy ptr. count ilość elementów tablicy ptr. (Wykład 6) Biblioteka standardowa - operacje wejścia/wyjścia 15 stycznia 2019 14 / 14
stdio.h - Operacje wejścia/wyjścia - fread() size t fread(void *ptr, size t size, size t count, FILE *stream ); - odczytuje ze strumienia (pliku) binarnego stream dane do tablicy ptr. size rozmiar komórki tablicy ptr. count ilość elementów tablicy ptr. float tab [56];... FILE * pfile = fopen (" myfile. txt ", "rb"); if( pfile ){ fread (tab, sizeof (* tab ), sizeof ( tab )/ sizeof (* tab ), pfile ); fclose ( pfile ); } (Wykład 6) Biblioteka standardowa - operacje wejścia/wyjścia 15 stycznia 2019 14 / 14