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

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

INFORMATYKA Studia Niestacjonarne Elektrotechnika

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

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

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

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

Biblioteka standardowa - operacje wejścia/wyjścia

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

Programowanie w językach wysokiego poziomu

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

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

Funkcje zawarte w bibliotece < io.h >

Funkcje zawarte w bibliotece < io.h >

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

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

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

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

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

1. Wprowadzanie danych z klawiatury funkcja scanf

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

7 Przygotował: mgr inż. Maciej Lasota

2 Przygotował: mgr inż. Maciej Lasota

PODSTAW PROGRAMOWANIA WYKŁAD 7 ŁAŃCUCHY

Podstawy programowania w języku C++

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

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

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

Informatyka, Ćwiczenie Uruchomienie Microsoft Visual C++ Politechnika Rzeszowska, Wojciech Szydełko. I. ZałoŜenie nowego projektu

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

Kier. MTR Programowanie w MATLABie Laboratorium

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

Język C i C++. Podstawy. Zagadnienia do opanowania. Przykład 1. (modyfikuj kod, aby zrealizować punkty 5., 7.)

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

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

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

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

Ghost in the machine

dr inż. Paweł Myszkowski Wykład nr 8 ( )

Argumenty wywołania programu, operacje na plikach

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

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

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

wer. 7 z drobnymi modyfikacjami Wojciech Myszka :48:

int tab[5]; tab[1]; ciągły obszar pamięci, w którym umieszczone są elementy tego samego typu macierz [ ] - dwuargumentowy operator indeksowania

Techniki programowania INP001002Wl rok akademicki 2017/18 semestr letni. Wykład 5. Karol Tarnowski A-1 p.

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

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

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

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

Wykład II Tablice (wstęp) Przykłady algorytmów Wstęp do języka C/C++

Strumienie i pliki. Programowanie Proceduralne 1

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

Wstęp do programowania INP001213Wcl rok akademicki 2018/19 semestr zimowy. Wykład 2. Karol Tarnowski A-1 p.

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

1 P roste e t ypy p d a d n a ych c - c ąg ą g d a d l a szy 2 T y T py p z ł z o ł żo ż ne e d a d n a ych c : T BLICE

Języki i metody programowania. Omówienie języków C, C++ i Java

Zasady programowania Dokumentacja

Wstęp do programowania INP003203L rok akademicki 2016/17 semestr zimowy. Laboratorium 1. Karol Tarnowski A-1 p.

Pliki wykład 2 -przekazywanie strumieni do funkcji -funkcje get(char &) i getline(string)

Programowanie Procedurale. Pliki w języku C++

Wstęp do programowania INP001213Wcl rok akademicki 2018/19 semestr zimowy. Wykład 8. Karol Tarnowski A-1 p.

Pliki wykład 2. Dorota Pylak

INFORMATYKA Studia Niestacjonarne Elektrotechnika

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

Języki programowania. Przetwarzanie tablic znaków. Część druga. Autorzy Tomasz Xięski Roman Simiński

Podstawy programowania w języku C++

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

Podstawy programowania w języku C++

Podstawy programowania

Struktury, unie, formatowanie, wskaźniki

Informatyka I. Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki

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

Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 5. Karol Tarnowski A-1 p.

Języki programowania obiektowego Nieobiektowe elementy języka C++

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

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

Zmienne, stałe i operatory

Języki i metody programowania I

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

Podstawy Informatyki. Inżynieria Ciepła, I rok. Wykład 10 Kurs C++

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

Podstawy programowania 1

Wstęp do programowania INP001213Wcl rok akademicki 2018/19 semestr zimowy. Wykład 4. Karol Tarnowski A-1 p.

Tablice deklaracja, reprezentacja wewnętrzna

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

PROE wykład 3 klasa string, przeciążanie funkcji, operatory. dr inż. Jacek Naruniec

utworz tworzącą w pamięci dynamicznej tablicę dwuwymiarową liczb rzeczywistych, a następnie zerującą jej wszystkie elementy,

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

Programowanie w językach

Tablice, funkcje - wprowadzenie

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

Podstawy programowania w języku C++

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

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

Wykład 2 Operacje wejściawyjścia. Ewa Gajda

Ćwiczenie 2 Wczytywanie i zapisywanie do plików tekstowych

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

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

Transkrypt:

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy Wykład 12 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B

Plan prezentacji (1) Obsługa łańcuchów znakowych getchar(), putchar() ctype, string puts(), gets() Na podstawie: G. Perry, D. Miller, Język C. Programowanie dla początkujących

Plan prezentacji (2) Wskaźnik na plik Dostęp do plików Odczyt plików tekstowych Zapis plików tekstowych Formatowanie danych wyjściowych Formatowane dane wejściowe Argumenty linii poleceń Na podstawie: G. Perry, D. Miller, Język C. Programowanie dla początkujących

Funkcje getchar(), putchar() Funkcja getchar() pobiera pojedynczy znak Funkcja putchar() drukuje pojedynczy znak

Funkcje getchar(), putchar()

Funkcje getchar(), putchar()

Funkcje getchar(), putchar()

Funkcje getchar(), putchar() funkcja getchar() buforuje dane wejściowe dopóki użytkownik na naciśnie klawisza Enter dane może poprawić dane znak nowej linii pozostaje w buforze, o ile nie zostanie usunięty

Funkcje getchar(), putchar() Program nie zadziała zgodnie z oczekiwaniem, bo znak nowej linii pozostanie w buforze.

Funkcje getchar(), putchar() Rozwiązaniem problemu jest usunięcie znaku nowej linii z bufora.

Funkcje getchar(), putchar() Program prosi o podanie inicjałów razem. Do usunięcia pozostanie jeden znak nowej linii.

Biblioteka ctype Do sprawdzenia do jakiej klasy znaków należy wczytany znak można wykorzystać funkcje z biblioteki ctype

Biblioteka ctype

Biblioteka ctype

Biblioteka ctype isalnum(c) isalpha(c) isdigit(c) islower(c) isupper(c) i inne toupper(c) tolower(c)

Biblioteka string strcpy() strlen() strcat() i inne

Biblioteka string

Biblioteka string

Biblioteka string

Biblioteka string

Funkcje puts() i gets()

Wskaźnik do pliku Dostęp do plików w programie uzyskuje się z wykorzystaniem wskaźnika do pliku. W bibliotece stdio zdefiniowano strukturę FILE służącą do przechowywania informacji o plikach. Przykładowa deklaracja FILE* fptr;

Otwieranie pliku Do otwierania plików służy funkcja fopen() z bibliteki stdio. Funkcja fopen() pobiera dwa argumenty: nazwę pliku, tryb dostępu do pliku. Funkcja fopen() zwraca wskaźnik na plik.

Otwieranie pliku przykład

Zamykanie pliku Do zamykania plików służy funkcja fclose() z bibliteki stdio. Funkcja fclose() pobiera jeden argument: wskaźnik plik. Funkcja fclose() zwraca liczbę całkowitą.

Otwieranie pliku Tryb dostępu Tryb dostępu do pliku określany jest łańcuchem znakowym. Podstawowe tryby dostępu określają litery: odczyt "r", zapis "w", dołączanie "a", plik binarny "b". Litery można ze sobą łączyć.

Dostęp do pliku Błędy Jeżeli nie można otworzyć pliku funkcja fopen() zwraca wskaźnik zerowy NULL. Jeżeli operacja zamknięcia pliku się nie powiedzie funkcja fclose() zwraca EOF.

Dostęp do pliku Przykład 1

Dostęp do pliku Przykład 2

Dostęp do pliku Przykład 3

Dostęp do pliku Przykład 3

Dostęp do pliku Przykład 3

Zapis danych do pliku Do zapisywania danych do pliku można wykorzystać funkcję fprintf(). Funkcja fprintf() działa analogicznie do funkcji printf(). Pierwszy argument jest wskaźnikiem do pliku, kolejnymi łańcuch kontrolny i dane do wyświetlenia. Przykładowo fprintf(fptr,"a = %lf\n",a);

Odczyt danych z pliku Do czytania danych z pliku można wykorzystać funkcję fscanf(). Funkcja fscanf() działa analogicznie do funkcji scanf(). Pierwszy argument jest wskaźnikiem do pliku, kolejnymi łańcuch kontrolny i referencje do zmiennych. Przykładowo fscanf(fptr,"a = %lf\n",&a);

Dostęp do pliku Przykład 4

Dostęp do pliku Przykład 4

Standardowe strumienie danych Biblioteka stdio zapewnia dostęp do trzech standardowych strumieni danych: stdin (standardowe wejście klawiatura), stdout (standardowe wyjście ekran), stderr (standardowy strumień błędów ekran).

Standardowe strumienie danych Przykład

Standardowe strumienie danych Przykład

Formatowanie danych wyjściowych int printf(char* format,...) Łańcuch kontrolny zawiera: zwykłe znaki, znaczniki konwersji: znacznik zaczyna się znakiem %, znacznik kończy się znakiem określającym typ danych.

Formatowanie danych wyjściowych Pomiędzy %, a znakiem określającym typ danych mogą znajdować się (kolejno): znak minus (wyrównanie do lewej), liczba określająca minimalną szerokość pola, kropka oddzielającą szerokość pola od precyzji, liczba określająca precyzję: największą dopuszczalną liczbę znaków w ciągu, liczbę cyfr po separatorze dziesiętnym dla liczb zmiennoprzecinkowych, minimalną liczbę cyfr dla liczb całkowitych, h lub l, jeżeli liczba całkowita ma zostać wypisana jako short lub long.

Formatowanie danych wyjściowych Szerokość lub precyzja mogą być określone znakiem *. Szerokość określa wtedy następny argument, który musi być liczbą int. Przykładowo: printf("%.*s", max, s);

Formatowanie danych wyjściowych znak typ wypisywany jako d, i int liczba dziesiętna o int liczba ósemkowa x, X int liczba szesnastkowa u int liczba dziesiętna bez znaku c int pojedynczy znak s char * znaki ciągu (w liczbie odpowiadającej precyzji lub poprzedzające \0) f double [-]m.dddddd e, E double [-]m.dddddde±xx lub [-]m.dddddde±xx g, G double jak %e lub %E, jeżeli wykładnik jest mniejszy niż -4 albo większy lub równy precyzji; w p.p. jako %f p void * wskaźnik % - wypisuje znak %

Formatowanie danych wyjściowych printf(format,"hello, world"); format wyjście :%s: :hello, world: :%10s: :hello, world: :%.10s: :hello, wor: :%-10s: :hello, world: :%.15s: :hello, world: :%-15s: :hello, world : :%15.10s: : hello, wor: :%-15.10s: :hello, wor :

Formatowanie danych wyjściowych Istnieje jeszcze jedna funkcja podobna do printf() i fprintf(): int sprintf(char *string, char *format,...) Wynik zapisywany w ciągu string (rozmiar string musi być wystarczający).

Formatowane dane wejściowe int scanf(char* format,...) odczytuje znaki ze standardowego wejścia, interpretuje je zgodnie ze specyfikacją zawartą w ciągu format, pozostałe argumenty muszą być referencjami do zmiennych.

Formatowane dane wejściowe int scanf(char* format,...) kończy odczytywanie po dojściu do końca ciągu formatowania lub w przypadku, gdy dane wejściowe nie odpowiadają specyfikacji zwraca liczbę elementów, które udało się przypisać osiągnięcie końca pliku sygnalizuje zwracając EOF

Formatowane dane wejściowe Istnieje jeszcze jedna funkcja podobna do scanf() i fscanf(): int sscanf(char* string, char* format,...) funkcja przeszukuje string zgodnie ze specyfikacją w format

Formatowane dane wejściowe Ciąg formatowania może zawierać: spacje i tabulatory (są pomijane), zwykłe znaki (z wyjątkiem %), które powinny być dopasowane do znaków drukowalnych w strumieniu danych wejściowych, znaczniki konwersji.

Formatowane dane wejściowe Znaczniki konwersji: znak %, opcjonalny znak * (wstrzymanie przypisania), opcjonalna liczba (określająca największą możliwą szerokość pola), opcjonalnej litery h, l lub L, która określa szerokość obiektu docelowego, znak określający typ danych.

Formatowane dane wejściowe znak typ argumentu dane wejściowe d int* liczba całkowita dziesiętna i int* liczba całkowita może być ósemkowa (znak 0 na początku) lub szesnastkowa (znaki 0x lub 0X na początku) o int* liczba całkowita ósemkowa (znak 0 opcjonalny) x, X int* liczba całkowita szesnastkowa (znaki 0x lub 0X opcjonalne) u unsigned int* liczba dziesiętna bez znaku mogą być poprzedzone literą h (short* zamiast int*) lub l (long* zamiast int*)

Formatowane dane wejściowe znak typ arg. dane wejściowe c char * znaki; dalsze znaki danych wejściowych (domyślnie 1) są umieszczane we wskazanym miejscu pamięci; pomijanie białych znaków wstrzymane; aby odczytać jeden znak drukowalny, używamy zapisu %1s s char * ciąg znaków; wskaźnik do tablicy znaków dostatecznie dużej, aby zapisać ciąg wraz z końcowym znakiem \0 e, f, g float * liczba zmiennoprzecinkowa z opcjonalnym znakiem, opcjonalną kropką dziesiętną i opcjonalnym wykładnikiem; mogą być poprzedzone literą l (double* zamiast float*) % - znak % znak typ arg. dane wejściowe c char * znaki; dalsze znaki danych wejściowych (domyślnie 1) są umieszczane we wskazanym miejscu pamięci; pomijanie białych znaków wstrzymane; aby odczytać jeden znak drukowalny, używamy zapisu %1s

Argumenty linii poleceń

Argumenty linii poleceń

Argumenty linii poleceń

Kopiowanie plików

Podsumowanie Obsługa łańcuchów znakowych Wskaźnik na plik Dostęp do plików Odczyt plików tekstowych Zapis plików tekstowych Formatowanie danych wyjściowych Formatowane dane wejściowe Argumenty linii poleceń