Podstawy programowania II Wykład 2: Biblioteka stdio.h Zachodniopomorska Szkoła Biznesu.

Slides:



Advertisements
Podobne prezentacje
Tablice 1. Deklaracja tablicy
Advertisements

Wstęp do strumieni danych
C++ Paweł Rzechonek Instytut Informatyki Uniwersytetu Wrocławskiego
Programowanie wizualne PW – LAB6 Wojciech Pieprzyca.
Mgr inż.Marcin Borkowski Podstawy Java Krótkie wprowadzenie dla studentów Wyższej Szkoły Ekologii i Zarządzania
Programowanie obiektowe PO PO - LAB 6 Wojciech Pieprzyca.
Wzorce.
Język ANSI C Funkcje Wykład: Programowanie komputerów
Prowadzący: mgr inż. Elżbieta Majka
Kompilator: a) gcc [cc, g++]
Prezentacja na temat Dos`a. Wykonał: Tomasz Kucharczyk
PROGRAMOWANIE STRUKTURALNE
formatowanie kodu źródłowego
Zakres i zasięg deklaracji Zakres : obszar programu, w którym identyfikator może być użyty zakres globalny : cały program zakres lokalny : definicja pojedynczej.
Inżynieria oprogramowania Lecture XXX JavaTM – część IV: IO
Programowanie imperatywne i język C Copyright, 2004 © Jerzy R. Nawrocki Wprowadzenie.
Programowanie imperatywne i język C Copyright, 2004 © Jerzy R. Nawrocki Wprowadzenie.
Tablice.
Wykład nr 2: Struktura systemu komputerowego a system operacyjny
1 Dygresja: cztery płyty główne…. 2 Dygresja: osobliwości C /* cos o nieistniejacym typie Boolean */ /* oraz o operatorze przecinkowym */ #include int.
Programowanie w C Wykład 3
SO – LAB3 Wojciech Pieprzyca
Podstawy programowania
Język ANSI C Operacje we/wy
1 Podstawy informatyki H. P. Janecki- 2006_ Systemy Operacyjne W6.
Programowanie obiektowe W2
Pliki WSADOWE.
Podstawy programowania
Pakiety w Javie Łukasz Smyczyński (132834). Czym są pakiety? Klasy w Javie są grupowane w pewne zbiory zwane pakietami. Pakiety są więc pewnym podzbiorem.
Podstawy programowania w języku C i C++
Podstawy informatyki 2013/2014
Instytut Tele- i Radiotechniczny WARSZAWA
Podstawy programowania. Język C i C++– podstawy Temat: 1
Podstawy programowania w języku C i C++
Pierwsze programy.
Warsztaty programowania w języku Python
Podstawy programowania II
Wprowadzenie do programowania w językach C i C++
Procedury i funkcje.
Definicja pliku tekstowego Operacje wykonywane na plikach tekstowych
Informatyka I - Wykład ANSI C
Pliki Pojęcie i rodzaje plików Definicja typu plikowego Operacje wykonywane na plikach elementowych.
Pliki tekstowe – A. Jędryczkowski © 2007 Turbo Pascal umożliwia wykorzystanie w programach plików tekstowych. Pliki takie zawierają informację niezakodowaną
Budowa komputera.
Programowanie obiektowe – zastosowanie języka Java SE
JAVA c.d.. Instrukcji wyboru SWITCH używamy, jeśli chcemy w zależności od wartości pewnego wyrażenia wykonać jeden z kilku fragmentów kodu. Jest to w.
Informatyka I Wykład 4 Stałe Stałe liczbowe Stałe znakowe Stałe tekstowe Jerzy Kotowski Politechnika Wroclawska var = 5L - 0xA; -5.
Systemy wejścia i wyjścia Michał Wrona. Co to jest system wejścia i wyjścia? Pobierania informacji ze źródeł danych, zdolnych przesyłać sekwencje bajtów,
Podstawy informatyki 2013/2014
1 Strumienie Hierarchie klas strumieniowych, strumienie bajtowe - klasy InputStream i OutputStream i ich metody, klasa File, strumienie plikowe, strumienie.
Temat 12: Formularze.
Programowanie w języku C++
Podstawy programowania II Wykład 3: Obsługa plików w stdio.h.
K URS JĘZYKA C++ – WYKŁAD 1 ( ) Łagodne wprowadzenie do języka C++
Microsoft Disk Operating System
System operacyjny „DOS”, „MS-DOS” oraz wybrane komendy.
BUDOWA WEWNĘTRZNA KOMPUTERA
Seminarium Dyplomowe: Metodyka i Techniki Programowania Autor: Bartłomiej Fornal.
Urządzenie wej/wyj Marcin Wojnowski.
Podstawy informatyki Preprocesor Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi.
Podstawy informatyki Operacje we/wy Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty.
Strumienie w języku Java Bartosz Walter InMoST Wielkopolska sieć współpracy w zakresie innowacyjnych metod wytwarzania oprogramowania Termin realizacji:
Piotr Kawałek , Mateusz Śliwowski
Strumienie, Wczytywanie, Zapisywanie, Operacje na plikach
Podstawy informatyki Operacje we/wy
Programowanie obiektowe – zastosowanie języka Java SE
Microsoft Disk Operating System
System operacyjny „DOS”, „MS-DOS” oraz wybrane komendy.
Zapis prezentacji:

Podstawy programowania II Wykład 2: Biblioteka stdio.h Zachodniopomorska Szkoła Biznesu

Podstawy programowania II - Biblioteka stdio.h Charakterystyka biblioteki stdio.h Nazwa pochodzi od Standard Input - Output Realizuje zadania związane z obsługą wejścia - wyjścia, np.: Wczytywanie danych z klawiatury Wyświetlanie danych na ekranie monitora Wprowadzanie i wyprowadzanie danych poprzez porty komputera, np. drukowanie na drukarce Odczyt danych z pliku dyskowego Zapis do pliku dyskowego Biblioteka ta należy do standardu ANSI i dołączana jest praktycznie do wszystkich kompilatorów C/C++. Zapewnia więc wysoką przenośność kodu W stdio.h wszystkich operacji we/wy dokonuje się na tzw. strumieniach (ang. stream) odpowiadających poszczególnym urządzeniom wejścia/wyjścia

Podstawy programowania II - Biblioteka stdio.h Strumienie Strumień to abstrakcyjne urządzenie wejścia-wyjścia, które pozwala na pobieranie z niego danych lub wysyłanie danych do niego Celem jest uniezależnienie programisty od sprzętu, a nawet od jego rodzaju. Np. wysyłanie danych na ekran (tekstowy), do pliku dyskowego czy na drukarkę powinno być realizowane tymi samymi funkcjami i to niezależnie od sprzętu. Realizację operacji wejścia wyjścia dopasowaną do danego urządzenia zapewniają już funkcje biblioteczne w zależności od właściwości użytego strumienia.

Podstawy programowania II - Biblioteka stdio.h Standardowy strumień wyjściowy stdout - domyślny, predefiniowany strumień, do którego program wysyła informacje tekstowe Zwykle jest on związany z ekranem monitora lub oknem tekstowym (tzw. konsola) w graficznym systemie operacyjnym System operacyjny umożliwia jednak podczas uruchamiania programu przekierowanie, zmianę standardowego urządzenia wyjściowego na inne, np. plik, drukarkę Na przykład komenda (DOS) dir > plik.txt spowoduje zapis listy plików z aktualnego katalogu do pliku tekstowego plik.txt zamiast na ekran. Wiele funkcji z biblioteki stdio.h realizuje wydruk do stdout, co w zasadzie oznacza wydruk na ekranie, ale umożliwia także przekierowanie podczas uruchamiania programu

Podstawy programowania II - Biblioteka stdio.h Funkcje wyjścia Wysyłanie pojedynczego znaku: putchar (do stdout) fputc (do dowolnego strumienia) putc (do dowolnego strumienia) Wysyłanie ciągu znaków (stringu): puts (do stdout) fputs (do dowolnego strumienia) Formatowane wyjście: printf (do stdout) fprintf (do dowolnego strumienia) sprintf (do stringu)

Podstawy programowania II - Biblioteka stdio.h Funkcja putchar Wysyła pojedynczy znak do stdout. Prototyp: int putchar (int znak); Parametry: znak kod ASCII znaku, który ma być wysłany. Zwracana wartość W przypadku powodzenia, funkcja zwraca wartość znak. W przypadku błędu zwracana jest wartość EOF (stała ta zdefiniowana jest przez bibliotekę stdio.h) Przykłady putchar(65); // Znak A putchar('B'); // putchar('\n'); // Znak końca linii

Podstawy programowania II - Biblioteka stdio.h Funkcja puts Wysyła string do stdout dodając na końcu znak nowej linii. Prototyp: int puts (char *tekst); Parametry: tekst wskaźnik do stringu zakończonego znakiem '\0'. Zwracana wartość W przypadku powodzenia zwracana jest wartość nieujemna. W przypadku błędu zwracana jest wartość EOF. Przykłady puts("Hello"); char *tekst="world!"; puts(tekst); //'world!' pojawi się pod 'Hello' if (puts("Abrakadabra")==EOF) // kontrola błędu puts ("Błąd!");

Podstawy programowania II - Biblioteka stdio.h Przykład użycia puts i putchar void main() { char tekst[5]= { 'A','B',0, 'C','D' }; // wyświetlenie stringu aż do znaku '\0' puts(tekst); // wyświetlone znaki: AB\n // wyświetlenie wszystkich znaków z tablicy for (int i=0; i<5; i++) putchar(tekst[i]); // wyświetlone znaki : AB\0CD }

Podstawy programowania II - Biblioteka stdio.h Funkcja printf i jej pochodne Funkcje: printf, sprintf, fprintf itp. służą do tworzenia i wysyłania (wyświetlania) tekstu złożonego z wielu elementów, takich jak: znaki (w tym znaki specjalne) ciągi znaków (zakończone znakiem '\0') liczby całkowite liczby zmiennoprzecinkowe adresy Funkcje te dokonują automatycznej konwersji każdej z powyższych danych na gotowy ciąg znaków oraz wysyłają go we wskazane miejsce (np. na ekran, do stringu lub do pliku) Umożliwiają elastyczne formatowanie poszczególnych pól, co pozwala programiście na kontrolę wyglądu i układu tekstu

Podstawy programowania II - Biblioteka stdio.h Funkcja printf Wysyła sformatowany tekst do stdout. Prototyp: int printf (char *format, lista_argumentów); int printf (char *format,...); // formalnie Parametry: format tzw. string formatu, definiujący treść i format wyświetlanego tekstu, w którym można umieścić tzw. pola lista argumentów ciąg wyrażeń oddzielonych przecinkami, odpowiadających poszczególnym polom w formacie. Liczba wyrażeń w liście argumentów powinna odpowiadać liczbie pól w formacie. W szczególności lista może być pusta. Zwracana wartość Funkcja zwraca całkowitą liczbę wysłanych znaków. W przypadku błędu zwracana jest wartość ujemna.

Podstawy programowania II - Biblioteka stdio.h String formatu Składa się z dowolnych znaków, z których większość jest wysyłana bezpośrednio na wyjście. Jeżeli w tekście wystąpi znak %, oznacza on pole, które będzie wypełnione wartością odpowiedniego argumentu, zgodnie z opisem formatu następującym po znaku %. Kolejność argumentów odpowiada kolejności pól w formacie. Przykład: printf ("Ala ma %d koty i %d psy.", 2, 3); Ala ma koty i psy.23

Podstawy programowania II - Biblioteka stdio.h Opis pola w formacie printf Typ - element obowiązkowy pola informujący o rodzaju wyświetlanej wartości (np. czy jest to liczba dziesiętna czy szesnastkowa, całkowita czy zmiennoprzecinkowa, czy może ciąg znaków). Pola opcjonalne: Flagi - określają niektóre szczegóły wyświetlania Szerokość - minimalna liczba znaków przeznaczonych na wydruk wartości pola Precyzja - dla liczb zmiennoprzecinkowych wyznacza liczbę miejsc po przecinku Rozmiar - informuje o rozmiarze interpretowanego argumentu (np. short/int/long lub double/long double ) %[flagi][szerokość][.precyzja][rozmiar]typ

Podstawy programowania II - Biblioteka stdio.h Wyświetlanie znaków Kod pola: c Odpowiedni argument funkcji printf powinien być typu char. Zostanie on potraktowany jako kod ASCII znaku do wysłania (wyświetlenia). W przypadku podania wartości typu całkowitego, zostanie wyświetlony znak odpowiadający jej modulo 256 Przykłady: printf ("Litera %c.",'A'); printf ("Litera %c i %c.",65, ); // 2 pola Litera A. Litera A i B.

Podstawy programowania II - Biblioteka stdio.h Wyświetlanie stringów Kod pola: s Odpowiedni argument funkcji printf musi być typu char *, a więc tablicą znaków, wskaźnikiem na znak lub bezpośrednio stringiem. Wyświetlone zostaną wszystkie znaki aż do najbliższego napotkanego znaku '\0'. Przykłady: printf ("Powiem Ci: %s", "Cześć!"); Powiem Ci: Cześć! char agent[]="Bond"; char *tekst=agent; printf ("Nazywam się %s, %s %s.", agent, "James", tekst); Nazywam się Bond, James Bond.

Podstawy programowania II - Biblioteka stdio.h Wyświetlanie liczb całkowitych Kod pola d lub i: liczba całkowita dziesiętna ze znakiem Argument powinien być liczbą całkowitą ze znakiem. Dla zbyt dużej wartości unsigned wynik będzie błędny. Kod poda u: nieujemna liczba dziesiętna ( unsigned ) Dla wartości ujemnej wynik będzie błędny. Kod poda x lub X: nieujemna liczba szesnastkowa ( unsigned ) Dla wartości ujemnej wynik będzie błędny. Dla pola x użyte będą cyfry a...f, dla pola X - A...F. Kod poda o : liczba ósemkowa ze znakiem Argument powinien być liczbą całkowitą ze znakiem. Dla zbyt dużej wartości unsigned wynik będzie błędny. Dla wszystkich powyższych rodzajów pól, podanie argumentu zmiennoprzecinkowego spowoduje wyświetlenie błędnej wartości

Podstawy programowania II - Biblioteka stdio.h Wyświetlanie liczb rzeczywistych Kod pola e lub E: liczba rzeczywista w notacji naukowej Argument powinien być liczbą zmiennoprzecinkową. Jeżeli typ wartości będzie całkowity, wynik może być błędny. Wartość zostanie wyświetlona w tzw. notacji naukowej, z użyciem znaku e lub E (np E-14 ) Kod poda f : liczba rzeczywista Argument jak wyżej. Wartość zostanie wyświetlona w zwykły sposób, z kropką dziesiętną, zazwyczaj ze stałą liczbą cyfr po kropce Kod pola g lub G: liczba rzeczywista Argument jak wyżej. Wartość zostanie wyświetlona w notacji naukowej lub zwykłej, w sposób najkrótszy z możliwych

Podstawy programowania II - Biblioteka stdio.h Przykłady pól dla liczb całkowitych PoleArgumentEfekt %d-10 %d %u %u %x2000 7d0 %X2000 7D0 %x-10 FFFFFFF6 %d %o

Podstawy programowania II - Biblioteka stdio.h Przykłady pól dla liczb rzeczywistych PoleArgumentEfekt %f %f10.0 / %f %e e+01 %E-10.0 / E+00 %g %g10.0/ %g E+009 %G E-005

Podstawy programowania II - Biblioteka stdio.h Wyświetlanie adresów Kod pola: p Argument powinien być wskaźnikiem na dowolny typ danych. Wyświetlony zostanie adres fizyczny na który wskazuje wskaźnik, w postali liczby szesnastkowej. Zakres możliwych adresów i sposób ich prezentacji zależy od kompilatora i od tego na jaki system operacyjny tworzony jest program. Przykład int tab[10]; printf ("Adres tablicy: %p.", tab);

Podstawy programowania II - Biblioteka stdio.h Znaki specjalne Szereg znaków sprawia kłopoty z zapisem wewnątrz stringu ze względu na ich specjalne znaczenie w składni języka C++: " zapisuje się jako: \" ' zapisuje się jako: \' \ zapisuje się jako: \\ (TAB) zapisuje się jako: \t (NEWLINE) zapisuje się jako: \n Z powodu użycia znaku % jako oznaczenia pola w stringu formatu funkcji printf, w celu jego wyświetlenia przez tę funkcję należy użyć sekwencji: %.

Podstawy programowania II - Biblioteka stdio.h Szerokość pola Liczba znaków poświęconych na wyświetlenie pola Jeżeli wyświetlana wartość składa się w rzeczywistości z mniejszej liczby znaków, brakujące uzupełniane są domyślnie za pomocą spacji z lewej strony Przykłady: printf ( "Liczba:%4d,", -1 ); printf ( "Liczba:%4d,", 100 ); printf ( "Liczba:%4f,", -1.1 ); printf ( "Imię:%10s.", "Piotr" ); Liczba: -1,// dopisane 2 spacje Liczba: 100,// dopisana 1 spacja Liczba:-1.1,// brak dopisanych spacji Imię: Piotr. // dopisane 5 spacji

Podstawy programowania II - Biblioteka stdio.h Precyzja W przypadku liczb zmiennoprzecinkowych pozwala ustalić wyświetloną liczbę cyfr po przecinku Jeżeli liczba posiada więcej cyfr po przecinku - nastąpi zaokrąglenie do najbliższej wartości Jeżeli liczba posiada mniej cyfr po przecinku - zostaną uzupełnione zerami Jeżeli nie określono precyzji - użyta zostanie domyślna Przykłady: printf ( "Liczba pi:%.2f,", ); printf ( "Liczba e :%10.2e,", ); printf ( "Liczba -1:%6.2f,", -1.0 ); Liczba pi:3.14, Liczba e : 2.72e+00, // dopisane 2 spacje Liczba 0 : -1.00, // dopisana 1 spacja

Podstawy programowania II - Biblioteka stdio.h Rozmiar argumentu Element ten pozwala sprecyzować liczbę bitów, na jakiej zapisano argument. Bywa to konieczne w przypadku wyświetlania wartości o dużych zakresach, np. long, double, long double Wartości: h:Dla pól (d, i, o, u, x, X)- short int l:Dla pól (d, i, o, u, x, X) - long int Dla pól (f, e, E, g, G)- double L:Dla pól (f, e, E, g, G)- long double Przykład: printf ( "Duża liczba:%lu.", ); Duża liczba:

Podstawy programowania II - Biblioteka stdio.h Flagi Pozwalają sterować dodatkowymi możliwościami formatowania Wartości: - Wyrównuje tekst do lewej strony pola, dopisywane znaki (np. spacje) pojawiają się po prawej stronie pola + Dla pól liczbowych - liczby dodatnie będą wypisane ze znakiem '+' na początku (spacja) Dla pól liczbowych - liczby dodatnie będą wypisane z dodatkowym znakiem spacji na początku (zamiast znaku) 0 Tekst uzupełniany jest znakami '0' zamiast spacji jeżeli wymaga tego szerokość pola Przykład: printf ( "%+08.2f,", 40.1 );

Podstawy programowania II - Biblioteka stdio.h Przykłady użycia printf printf ("Ala ma kota."); printf ("%s %c. ma %d koty.\n", "Paweł", 'A', 2); float tab[5]={0.01, -0.1, 10, -100, }; for (int i=0; i<5; i++) printf("Liczba %d: %+7.2f\n", i+1, tab[i]); Ala ma kota. Paweł A. ma 2 koty. Liczba 1: Liczba 2: Liczba 3: Liczba 4: Liczba 5: _ Przykład: printf.cpp

Podstawy programowania II - Biblioteka stdio.h Zalety i wady funkcji printf Zalety: Zwięzłość zapisu Duża elastyczność i łatwość formatowania Przenośność Wady: Konieczność informowania o typie każdego argumentu (nie ma jej np. dla cout ) Brak kontroli zgodności rodzaju pól z typami argumentów Stosunkowo niska czytelność kodu

Podstawy programowania II - Biblioteka stdio.h funkcje pochodne od printf Umieszczenie tekstu sformatowanego w stringu int sprintf(char *buf, char *format,...); UWAGA! Pamięć wskazywana przez buf musi być wcześniej pobrana, na przykład jako deklaracja tablicy. Wysłanie tekstu sformatowanego do podanego strumienia int fprintf(FILE *strumień, char *format,...); UWAGA! strumień musi być uprzednio przygotowany do odbioru danych, czyli otwarty. Wersje funkcji printf z mechanizmem tzw. zmiennej liczby argumentów (dla zaawansowanych) Wynik do stdout int vprintf(char *format,...); Wynik do stringu int vsprintf(char *buf, char *format,...); Wynik do pliku int vfprintf(FILE *buf, char *format,...);

Podstawy programowania II - Biblioteka stdio.h Standardowy strumień wejściowy stdin - domyślny, predefiniowany strumień, z którego program pobiera informacje tekstowe Zwykle jest on związany z klawiaturą System operacyjny umożliwia jednak podczas uruchamiania programu przekierowanie, zmianę standardowego urządzenia wyjściowego na inne, np. plik Na przykład komenda (DOS) program.exe < plik.txt spowoduje, że uruchamiany program zamiast z klawiatury zacznie pobierać informacje z pliku tekstowego plik.txt Wiele funkcji z biblioteki stdio.h realizuje odczyt z stdout, co w zasadzie oznacza odczyt z klawiatury, ale umożliwia także przekierowanie podczas uruchamiania programu

Podstawy programowania II - Biblioteka stdio.h Funkcje wejścia Wprowadzanie pojedynczego znaku: getchar (z stdin) fgetc (z dowolnego strumienia) getc (z dowolnego strumienia) Wprowadzanie ciągu znaków (stringu): gets (z stdin) fgets (z dowolnego strumienia) Formatowane wejście: scanf (z stdin) fscanf (z dowolnego strumienia) sscanf (ze stringu)

Podstawy programowania II - Biblioteka stdio.h Funkcja getchar Wprowadza pojedynczy znak z stdin. Prototyp: int getchar (); Zwracana wartość W przypadku powodzenia, funkcja zwraca kod odczytanego znaku jako typ int. W przypadku błędu zwracana jest wartość EOF (stała zdefiniowana przez bibliotekę stdio.h) Przykład int kod=getchar(); printf("Podany znak to %c.\n", kod); getchar(); // czekanie na ENTER

Podstawy programowania II - Biblioteka stdio.h Funkcja gets Wprowadza pod podany adres jedną linię tekstu (do najbliższego znaku nowej linii) z stdin (domyślnie z klawiatury) zastępując znak nowej linii znakiem ' \0'. Prototyp: char *gets (char *buf); Parametry: buf wskaźnik do fragmentu pamięci przeznaczonego na tekst. Zwracana wartość: W przypadku powodzenia zwracany jest wskaźnik równy buf. W przypadku błędu zwracana jest wartość NULL (czyli 0). Przykłady char adres[256]; gets(adres); printf("Twój adres: %s\n", adres);

Podstawy programowania II - Biblioteka stdio.h Problem alokacji pamięci Wskaźnik podawany jako parametr w wielu funkcjach wejścia wskazuje miejsce w pamięci przeznaczone do umieszczenia danych. Miejsce to musi zostać uprzednio pobrane od systemu, Wskaźnik powinien więc w tej sytuacji być "ustawiony" na istniejącą zmienną (tablicę) Ponieważ nazwa tablicy jest wskaźnikiem na jej początek, można podać tę nazwę jako parametr. Typowy błąd, jaki można popełnić korzystając ze zmiennej wskaźnikowej: char * wsk; gets(wsk);// przypadkowe miejsce !!! Prawidłowe rozwiązanie: char tab[100]; char *wsk = tab;// ustawienie wskaźnika! gets(wsk);// lub: gets(tab);

Podstawy programowania II - Biblioteka stdio.h Funkcja scanf Wprowadza sformatowane dane z stdin. Prototyp: int scanf (char *format, lista_wskaźników); Parametry: format string definiujący oczekiwany format tekstu, w tym liczbę i rodzaj pól (wprowadzanych danych), lista wskaźników ciąg wyrażeń o typie wskaźnikowym, oddzielonych przecinkami, odpowiadających poszczególnym polom w formacie. Liczba wyrażeń w liście wskaźników powinna odpowiadać liczbie pól w formacie. W szczególności lista może być pusta. Zwracana wartość Funkcja zwraca liczbę prawidłowo odczytanych pól. W przypadku błędu uniemożliwiającego odczyt, zwra EOF.

Podstawy programowania II - Biblioteka stdio.h String formatu dla scanf Odzwierciedla oczekiwany format tekstu na wejściu. Może się składać z elementów: spacja lub tabulacja (tzw. whitespace) - dowolna liczba znaków spacji, tabulacji lub nowej linii zostanie odczytana i zignorowana znak % i następujący po nim opis pola - oczekiwana jest dana określonego rodzaju i formatu. Jeżeli tekst nie będzie odpowiadał formatowi, odczyt zostanie przerwany. inny znak - na wejściu oczekiwany jest dokładnie ten znak, jeżeli pojawi się inny, odczyt zostanie przerwany. Przerwanie odczytu oznacza, że pozostałe znaki, począwszy od pierwszego niepasującego, pozostają nadal na wejściu Przykłady stringu formatu: "%f PLN" // np.: "345.4 PLN" "%2d-%2d-%4d" // np.:

Podstawy programowania II - Biblioteka stdio.h Opis pola w formacie scanf Typ - element obowiązkowy pola informujący o rodzaju odczytywanej wartości (np. czy jest to liczba dziesiętna czy szesnastkowa, całkowita czy zmiennoprzecinkowa, czy może ciąg znaków). Pola opcjonalne: * - odczytanie wartości pola bez zapisu do pamięci, Nie należy podawać wskaźnika dla tego pola Szerokość - maksymalna interpretowana liczba znaków dla pola Rozmiar - informuje o rozmiarze zmiennej przeznaczonej do zapisu pola (np. short/long lub float/double ) %[*][szerokość][rozmiar]typ

Podstawy programowania II - Biblioteka stdio.h Wprowadzanie znaków Kod pola: c Odpowiedni wskaźnik powinien być typu char *. Przykłady: char plec; printf("Podaj płeć (K/M): "); scanf ("%c", &plec); // & - pobranie adresu Podany przez użytkownika znak zostanie umieszczony w zmiennej plec. char kod[4]; printf("Podaj 4-znakowy kod: "); scanf ("%4c", kod); Podany przez użytkownika 4-znakowy kod zostanie umieszczony począwszy od wskaźnika kod. Na końcu nie zostanie umieszczony znak '\0'

Podstawy programowania II - Biblioteka stdio.h Wprowadzanie stringów Kod pola: s Odpowiedni wskaźnik funkcji musi być typu char * i wskazywać na pobrany od systemu fragment pamięci (tablicę). Wczytane zostaną wszystkie znaki aż do pierwszego napotkanego odstępu (spacja, tabulacja lub nowa linia). Na końcu automatycznie dołączony zostanie znak '\0'. Przykład: char nazwisko[20]; scanf ("%19s", nazwisko); // max 19 znaków

Podstawy programowania II - Biblioteka stdio.h Wprowadzanie liczb całkowitych Kod pola d: liczba całkowita dziesiętna, może zawierać znak +/-. Wskaźnik powinien być typu int * Kod poda u: nieujemna liczba dziesiętna ( unsigned ) Wskaźnik powinien być typu unsigned int * Kod poda x lub X: liczba całkowita szesnastkowa Wskaźnik powinien być typu int * Kod poda o : liczba całkowita ósemkowa Wskaźnik powinien być typu int * Dla wszystkich powyższych rodzajów pól, podanie przez użytkownika kropki dziesiętnej lub innego nieodpowiedniego znaku zakończy odczyt pola

Podstawy programowania II - Biblioteka stdio.h Wprowadzanie liczb rzeczywistych Kod pola e, E, f, g, G: Liczba rzeczywista w dowolnej notacji. Może zawierać: - znak +/-, - kropkę dziesiętną, - znak E lub e, po którym powinna występować liczba całkowita (która również może zawierać znak +/-)

Podstawy programowania II - Biblioteka stdio.h Rozmiar argumentu Element ten pozwala sprecyzować liczbę bitów, na jakiej zapisana zostanie odczytana wartość. W przypadku niesprecyzowania rozmiaru, domyślnymi typami danych są int (pola d, o), unsigned int (pola u, x, X), oraz float (pola e, E, f, g, G) Oznaczenie: h:Dla pól (d, o, u, x, X)- (unsigned) short int l:Dla pól (d, o, u, x, X) - (unsigned) long int Dla pól (f, e, E, g, G)- double L:Dla pól (f, e, E, g, G)- long double Przykład: unsigned long int liczba; printf ("Podaj dużą liczbę całkowitą:"); scanf("%lu", &liczba); scanf("%u", &liczba); // Zapis połowy bitów!

Podstawy programowania II - Biblioteka stdio.h Przykłady użycia scanf int i,n; float f, wsp[3]; char tab[10]; printf ("Podaj liczbę całkowitą:"); scanf("%d", &i); printf ("Podaj współrzędne 3D:"); scanf("%f, %f, %f", wsp, wsp+1, wsp+2); float tab[3]; printf ("Podaj 1-3 liczb (na końcu 'x')"); n=scanf("%f %f %f", tab, tab+1, tab+2); printf ("Podałeś %d liczb!\n", n);

Podstawy programowania II - Biblioteka stdio.h Funkcje pochodne od scanf Odczyt sformatowanego tekstu ze stringu: int sscanf(char *buf, char *format,...); buf wskazuje na początek interpretowanego tekstu, który powinien być zakończony znakiem '\0' Odczyt sformatowanego tekstu z podanego strumienia: int fscanf(FILE *strumień, char *format,...); UWAGA! Strumień (np. plik na dysku) musi być uprzednio otwarty.

printf ("Dziękuję za %s i ", "uwagę"); printf ("zapraszam na %d wykład.\n", 3); Dziękuję za uwagę i zapraszam na 3 wykład. czyli...