04 Funkcje wejścia i wyjścia

background image

Funkcje wejścia/wyjścia w stylu C

Funkcja printf
Funkcja printf jest zadeklarowana w pliku nagłówkowym <stdio.h>. Funkcja wysyła znaki
na standardowe wyjście o nazwie stdout. Podstawowy nagłówek

int printf (const char *format [, argument, ...]);

gdzie:
format - łańcuch formatujący, zawierający specyfikatory formatu i zwykłe znaki
argument,... - ciąg argumentów

Funkcja wykonuje następujące czynności:

otrzymuje wiele argumentów w postaci wyrażeń

wykorzystuje do każdego argumentu tzw. specyfikator formatu (pierwszy
specyfikator do pierwszego argumentu, drugi do drugiego itd.) np. %i do argumentu
typu całkowitego

wysyła na wyjście (stdout) np. ekran zawartość łańcucha formatującego

w przypadku błędu zwraca znak EOF

Uwagi:

-

musi być tyle argumentów, ile jest specyfikatorów

-

jeśli istnieje więcej argumentów niż specyfikatorów, są one ignorowane

Specyfikator formatu ma postać:
%[flags] [width] [.prec] [F|N|h|l|L] type_char
z czego tylko type_char jest wymagany, pozostałe składniki są opcjonalne.

Specyfikator konwersji (type_char)

Specyfikator

konwersji

Dana wejściowa

d

całkowita dziesiętna liczba ze znakiem

i

całkowita dziesiętna liczba ze znakiem

o

całkowita ósemkowa bez znaku

u

całkowita dziesiętna bez znaku

x

całkowita heksadecymalna bez znaku z literami (a, b, c, d, e, f)

X

całkowita heksadecymalna bez znaku z literami (A, B, C, D, E, F)

f

rzeczywista w zapisie dziesiętnym

e

rzeczywista: format z wykładnikiem e

E

rzeczywista: format z wykładnikiem E

g

wybrany krótszy format: f lub e

G

wybrany krótszy format: f lub E

c

pojedynczy znak

s

łańcuch, drukuje znaki do znaku kończącego łańcuch –zero

%

wyprowadza znak %

n

wyprowadza tyle znaków, ile podano pod adresem skojarzonym
z n

p

wskaźnik, zależnie od modelu pamięci format: XXXX:YYYY lub
YYYY

background image

Znaczniki (flags)

Znacznik

Znaczenie

-

wyrównuje tekst od lewej, spacje z prawej strony, jeśli muszą być
dołożone

+

wyprowadzana wartość zawsze ze znakiem + lub –

spacja

wyprowadzana wartość zawiera albo znak – albo spację

#

używany, gdy konwersja argumentu przebiega wg alternatywnej
formy (gdy ósemkowa, znak 0 na początku, gdy heksagonalna to na
począku 0x lub 0X)

Szerokość (width) - minimalna liczba znaków do wyprowadzenia tekstu uzupełniana

spacjami lub zerami

Wartość

Znaczenie

n

uzupełnianie spacjami do rozmiaru n znaków

0n

uzupełnianie zerami do rozmiaru n znaków

*

przed argumentem związanym z % umieszcza się wyrażenie
określające aktualny rozmiar wyprowadzanego tekstu

Precyzja (prec) - maksymalna liczba znaków części dziesiętnej

Wartość

Znaczenie

n

liczba cyfr części dziesiętnej

*

przed argumentem związanym z % umieszcza się wyrażenie
określające aktualny rozmiar części dziesiętnej

[F|N|h|l|L] wewnętrzny modyfikator rozmiaru

Wartość

Znaczenie

N

near pointer (za wyjątkiem modelu huge)

h

short int

F

far pointer

l

long int, double

L

long double

Przykład

background image

Funkcja scanf

Funkcja scanf jest zadeklarowana w pliku nagłówkowym <stdio.h>. Funkcja pobiera znaki
ze standardowego wejścia stdin np. z klawiatury. Podstawowy nagłówek

int scanf ( const char *format [, address, ...]);

gdzie:
format - łańcuch formatujący, zawierający specyfikatory formatu i zwykłe znaki
address,...- ciąg adresów argumentów

Funkcja wykonuje następujące czynności:

otrzymuje wiele argumentów, które pobiera znak po znaku z wejścia stdin np. z

klawiatury

wykorzystuje do każdego argumentu tzw. specyfikator formatu (pierwszy specyfikator do

pierwszego argumentu, drugi do drugiego itd.) np. %i do adresu argumentu typu
całkowitego,

wysyła daną po konwersji, zgodną ze specyfikatorem formatu, pod związany z nią adres

funkcja zwraca liczbę poprawnie pobranych danych, poddanych konwersji i wysłanych

pod wskazany adres – różna liczba specyfikatorów i wynik scanf oznacza błąd

zwraca znak EOF, jeśli nie ma danych (naciśnięto np. F6)

Uwagi:
- musi być tyle adresów argumentów, ile jest specyfikatorów, dopasowanych do typu danej
- jeśli istnieje więcej argumentów niż specyfikatorów, są one ignorowane
- ciąg znaków jest czytany do białych znaków (np. spacji)

Specyfikator formatu ma postać
% [*] [width] [F|N] [h|l|L] type_char

Specyfikator konwersji

Specyfikator

konwersji

Dana wejściowa

d

liczba dziesiętna ze znakiem

i

liczba dziesiętna ze znakiem

u

liczba dziesiętna bez znaku

x

liczba w kodzie szesnastkowym (bez znaku)

o

liczba w kodzie ósemkowym (bez znaku)

f

liczba zmiennoprzecinkowa

e

liczba zmiennoprzecinkowa

g

liczba zmiennoprzecinkowa

c

pojedynczy znak

s

łańcuch znaków

* – pomija się wynik konwersji wprowadzonego łańcucha
szerokość – ogranicza się liczbę czytanych znaków
[F|N] opcjonalne – modyfikator rozmiaru wskaźnika
[h|l|L] opcjonalne – modyfikator typu argumentu

background image

Wartość

Znaczenie

F

far

N

near

h

short int (d, u, x , o)

l

long int (d, u, x , o)

l

double (f, e, g)

L

long double (f, e, g)

Przykład

&wiek i &ilosc to odwołania do pamięci, w której należy zapisać wczytane wartości.
Pominięcie & w środowisku Dev-C++ powoduje zawieszenie się działania programu!
Dla tablic będziemy podawać nazwę tablicy bez &.

Ćwiczenia
1. Napisz program w stylu C, który wczytuje ilość przedmiotów i ocenę z programowania z
poprzedniego semestru a następnie wyświetla je po odpowiednich komunikatach.

background image

Funkcje wejścia/wyjścia w stylu C++

Wyświetlanie danych przy pomocy cout

Wyświetlenie znaków w C++ możliwe jest dzięki instrukcji

cout << zmienna;

Obiekt cout jest zdefiniowany w bibliotece iostream. Operator << dostosowuje się do typu
danych, które po nim występują i wyświetla liczby jako liczby a napisy jako napisy. Aby
możliwe było korzystanie z obiektu cout, należy za pomocą instrukcji
#include <iostream>
dołączyć bibliotekę zawierającą definicję obiektu. Ponadto za pomocą instrukcji
using namespace std;
musimy dołączyć przestrzeń nazw std, w której się znajduje (albo wywoływać obiekt
std::cout).

Przykład

Możliwe jest łączenie kilku kolejnych instrukcji cout w jedną. Ciąg instrukcji:

Wczytywanie danych przy pomocy cin
Wczytanie danych z klawiatury w C++ możliwe jest dzięki instrukcji:
cin >> zmienna;
Dane wejściowe w C++ są strumieniem znaków wpływających do programu. W pliku
iostream zdefiniowano obiekt cin jako obiekt realizujący ten strumień. Operator >> pobiera
znaki ze strumienia wejściowego i wstawia do zmiennej znajdującej się za nim. Podobnie
jak w przypadku obiektu cout, niezbędne są instrukcje:

#include <iostream>
using namespace std;

background image

Przykład

Ćwiczenia
1. Napisz program, który wczytuje ilość przedmiotów i ocenę z programowania z
poprzedniego semestru a następnie wyświetla je po odpowiednich komunikatach.


Wyszukiwarka

Podobne podstrony:
04 Funkcje
Porty wejścia wyjścia
12 uklad wejscia wyjscia 8255
WEJŚCIE WYJŚCIE
04 Funkcje, wisisz, wydzial informatyki, studia zaoczne inzynierskie, jezyk java
Układ uniwersalnego, równoległego portu wejścia wyjścia?55
04 Funkcjonow banku hipoid 5023 Nieznany
Wybierz jedno z urządzeń wejścia wyjścia komputera i opisz je.(drukarka atramentowa), Studia, Inform
Obsluga wejscia wyjscia KIA PRz
Wyklad 15, wejście-wyjście 2
bd2 04 funkcje i procedury
systemy wejścia wyjścia
Urządzenia wejścia i wyjścia
11 wejscie wyjscie
MEL 04. Funkcje elementarne
Przekierowanie wejścia i wyjścia, materiały edukacyjne, SOISK(sys operacyjne i sieci komp )
Urzadzenia wejscia i wyjscia informatyka praca semestralna
Architektura i organizacja komuterów W7 Wejście Wyjście

więcej podobnych podstron