C/C++

Biblioteki funkcji standardowych

stdio.h – funkcje printf() i scanf()

math.h – funkcje matematyczne

stdlib.h

. - funkc

k j

c e

e ma

m tem

e a

m tycz

c n

z e

e i k

o

k nwe

w r

e s

r ji

ctype.h – konwersja znaków

conio.h – obsługa ekranu

string.h – obsługa łańcuchów znaków

STL – obsługa łańcuchów znaków

C/C++ - funkcje standardowe

W języku C/C++ dostępne są funkcje standardowe pozwalające na realizację operacji: matematycznych, wejścia/wyjścia, na znakach, na łańcuchach znaków, obsługi zegara , czasu i daty.

Ponad to w języku C++ dostępne są tzw. klasy standardowe, zg

z rupow

o an

a e

e w

bib

i li

l o

i te

t c

e e

c

e o

n

az

a w

z ie

i

e S

TL

T

L (Sta

t n

a dar

a d

d T

e

T m

e p

m la

l t

a e

t Li

L b

i rar

a y)

y ,

pozwalające na sprawniejsze operowanie na łańcuchach znaków, tablicach (zmiana rozmiaru) itp.

W programie można wykorzystać funkcje standardowe po uprzednim włączeniu dyrektywą #include pliku nagłówkowego w którym znajduje się prototyp funkcji. Pliki nagłówkowe posiadają zwyczajowe rozszerzenie .h. Funkcje z poszczególnych grup posiadają prototypy w tym samym pliku nagłówkowym.

C/C++ - funkcje standardowe

wybrane pliki nagłówkowe

Nazwa pliku

Opis

Standard

math.h

funkcje matematyczne

ANSI C

stdio.h

standardowe we/wy

ANSI C

stdlib.h

funkcje matematyczne i konwersji

ANSI C

conio.h

funkcje obsługi ekranu i klawiatury

ANSI C

string.h

działania na łańcuchach znaków

ANSI C

time

m .

e h

.

sys

y tem

e o

m we

w

e funkcj

c e

e c

z

c a

z s

a u

AN

A S

N I

I C

stddef.h

definicje stałych

ANSI C

ctype.h

działania na znakach

ANSI C

errno.h

definicje kodów błędów

ANSI C

dir.h

operacje na systemie plików

ANSI C

iostream.h

definicje klas umożliwiających realizację

C++

operacji we/wy

iomanip.h

definicje manipulatorów we/wy

C++

fstream.h

definicje klas umożliwiających realizację

C++

operacji we/wy na plikach

C/C++ - funkcje standardowe – printf(), scanf() stdio.h

Funkcje printf() oraz scanf() realizują operacje formatowanego wejścia/

wyjścia na wbudowanych typach danych. Termin „formatowane” oznacza, że umożliwiają wyświetlanie i wczytywanie danych w różnych, określonych przez programistę formatach.

printf() – wyprowadzanie danych na ekran (standardowe wyjście).

prototyp:

int pr

intf( c

onst

ons char *

lan_form

or at

m u, t

yp par

p

am

par

e

am tr1

r ,typ par

p

am

par

e

am tr2

r , .

..);

Pierwszy argument funkcji jest łańcuchem określającym sposób wyświetlania pozostałych argumentów (ich typ i format).Funkcja zwraca liczbę wyświetlonych znaków.

Przykład

printf(”Znak %c zajmuje %d bajt w pamięci %s”,’a’,1,”!!!”); Na ekran zostanie wyprowadzony napis: „Znak a zajmuje 1 bajt w pamięci !!!”

W łańcuchu formatującym w miejsce specyfikatorów formatu %c, %d ,%s wstawione zostaną wartości parametrów z listy (w kolejności występowania).

C/C++ - funkcje standardowe – printf(), scanf() stdio.h

Specyfikatory formatu funkcji printf():

%c

- znak;

%s

- łańcuch znaków;

%d

- liczba całkowita ze znakiem w systemie dziesiętnym;

%u

- liczba całkowita bez znaku w systemie dziesiętnym;

%f

- liczba zmiennoprzecinkowa z kropką;

%Lf

- liczba z

mi

m ennoprzecinkowa

nkow t

ypu doubl

pu

e;

%e

- liczba zmiennoprzecinkowa w zapisie wykładniczym;

%Le

- liczba zmiennoprzecinkowa w zapisie wykładniczym typu long double;

%g

- krótszy z formatów %f i %e;

%o

- liczba w systemie ósemkowym;

%x

- liczba w systemie szesnastkowym;

%%

- znak %.

C/C++ - funkcje standardowe – printf(), scanf() stdio.h

printf()

Specyfikator minimalnej szerokości pola:

liczba umieszczona pomiędzy znakiem % i literą formatu, oznacza minimalną szerokość w znakach jaką będzie zajmować dana. Jeśli dana jest dłuższa to zostanie wyświetlona w całości.

Pr

P zykład

int x=23;

printf(”%6d”,x);

// wyświetlenie wartości zmiennej x na polu o szerokości 6 znaków.

C/C++ - funkcje standardowe – printf(), scanf() stdio.h

printf()

Specyfikator dokładności :

w postaci kropki i liczby umieszczonej za specyfikatorem minimalnej szerokości pola określa dla liczb zmiennoprzecinkowych liczbę pozycji po kropce dziesiętnej jakie mają być wyświetlone.

Przykład

float x=2.2345;

printf(”%6.3f”,x);

// wyświetlenie wartości zmiennej x z precyzją 3 cyfr po przecinku.

C/C++ - funkcje standardowe – printf(), scanf() stdio.h

scanf() – wczytanie danych z klawiatury (standardowe wejście).

prototyp:

int scanf( const char * lan_formatu, typ * wsk1,typ *wsk2, ...); Pierwszy argument funkcji jest łańcuchem określającym sposób wczytywania wartości do zmiennych wymienionych w liście argumentów. Do funkcji scanf() przekazywa

w ne

ne s

ą

s a

dresy

s z

mi

m ennych.

Przykład

char ch;

int x;

scanf(”%c%d”,&ch,&x);

Wczytane dane, odseparowane spacjami, zostaną wprowadzone do zmiennych: znakowej i zmiennej typu int.

C/C++ - funkcje standardowe – printf(), scanf() stdio.h

Specyfikatory formatu funkcji scanf():

%c

- znak;

%s

- łańcuch znaków;

%d

- liczba całkowita ze znakiem w systemie dziesiętnym;

%u

- liczba całkowita bez znaku w systemie dziesiętnym;

%f

- liczba zmiennoprzecinkowa z kropką;

%Lf

- liczba zmiennoprzecinkowa typu double;

C/C++ - funkcje standardowe – printf(), scanf() Przykład

#include <stdio.h>

main ()

{ char tch[60];

int i;

float x,y;

printf("podaj liczbę całkowitą: ");

scanf("%d",&i);

printf("\npodales %10d ",i);

printf("\npodaj dwie liczby rzeczywiste separator - spacja: "); scanf("%f%f",&x,&y);

printf("\npodales %5.2f i %5.2f ",x,y);

printf("\npodaj lancuch znakow: ");

scanf("%s",tch);

printf("\npodales %s ",tch);

return 0;

}

przykład

C/C++ - funkcje standardowe - matematyczne math.h

double sin(double x);

- sinus kąta (w radianach)

double cos(double x);

- cosinus kąta (w radianach)

double tan(double x);

- tangens kąta (w radianach)

double asin(double x);

- arcus sinus

double acos(double x);

- arcus cosinus

double atan(double x) ;

- arcus tangens

double

l sin

i h(doub

u l

b e

l

e x

);

- sin

i us h

ip

i er

e boli

l c

i z

c n

z y

n

double cosh(double x);

- cosinus hiperboliczny

double tanh(double x);

- tangens hiperboliczny

double exp(double x);

- e do potęgi x

double sqrt(double x);

- pierwiastek kwadratowy

double pow(double x, double y);

- x do potęgi y

double log(double x);

- logarytm naturalny

double log10(double x);

- logarytm dziesiętny

double floor(double x);

- największa liczba całkowita mniejsza od x

double ceil(double x);

- najmniejsza liczba całkowita większa od x

C/C++ - funkcje standardowe - matematyczne math.h

double fabs(double x);

- wartość bezwzględna

double cabs(struct complex z);

- moduł liczby zespolonej

struktura struct complex jest zdefiniowana następująco: struct complex {

double x;

double y;

};

double fmod(double x, double y);

- reszta z dzielenia x/ y

double modf(double x, double * i); - rozkład na część całkowitą i ułamek , część całkowita jest zwracana przez funkcję, a ułamek przez zmienna wskazywaną przez i

double hypot(double x,double y);

- pierwiastek z sumy kwadratów

liczb x i y

C/C++ - funkcje standardowe – matematyczne i konwersji

stdlib.h

int abs(int x);

- wartość bezwzględna

div_t div(int licznik, int mianownik); - wynik i reszta z dzielenia całkowitego, wynik w zmiennej typu div_t będącego strukturą o polach :

int quot;

int rem;

ma

m x( x, y) - ma

m kro, zwr

w aca w

i

w ększ

ks ą z

dw

óc

dw

h liczb, t

yp dow

p

ol

dow ny

min( x, y) - makro, zwraca mniejszą z dwóch liczb, typ dowolny int rand(void); – losuje liczbę pseudolosową z przedziału 0-RAND_MAX (makro)

void randomize(void) – makro, inicjalizacja generatora liczb pseudolosowych, korzysta z funkcji time()

(time.h)

int random(int zakres) - makro, zwraca liczbę pseudolosową z zakresu 0-( zakres-1)

void srand(unsigned seed); - ustala wartość początkową generatora liczb pseudolosowych

C/C++ - funkcje standardowe – matematyczne i konwersji

stdlib.h

int atoi(char * str); - przekształca łańcuch wskazywany przez str w liczbę typu int, jeśli łańcuch nie zawiera ciągu

stanowiącego liczbę funkcja zwraca wartość 0, jeśli łańcuch zaczyna się od poprawnego zapisu liczby to pozostałe znaki są pomijane w trakcie konwersji,

funkcj

c e

j

e p

okrew

e ne:

e

: s

tr

t to

t l(

l ), s

tr

t to

t ul(

l ).

)

przykład

double atof(char * str); - przekształca łańcuch wskazywany przez str w liczbę typu double, łańcuch powinien zawierać

prawidłową notację liczby zmiennoprzecinkowej (z kropką lub z symbolem „e” lub „E”); jeśli łańcuch nie zawiera ciągu stanowiącego liczbę funkcja zwraca wartość 0, jeśli łańcuch zaczyna się od poprawnego zapisu liczby to

pozostałe znaki są pomijane w trakcie konwersji,

funkcje pokrewne: strtod(), strtold().

przykład

C/C++ - funkcje standardowe – matematyczne i konwersji

stdlib.h

char *itoa(int liczba, char * str, int radix); - przekształca liczbę całkowitą w łańcuch i umieszcza go w tablicy wskazywanej przez str, radix jest podstawą systemu liczenia (od 2 do 36), maksymalna długość ciągu znaków – 34,

funkcje pokrewne: ultoa.

char *gcvt(double liczba, int lznakow, char * str); - przekształca liczbę

zmiennoprzecinkową liczba w łańcuch o długości lznakow i umieszcza go w tablicy wskazywanej przez str,

funkcje pokrewne: ecvt(), cvt().

Zamiany liczby na łańcuch można dokonać korzystając z uniwersalnej funkcji formatowanego wydruku do tablicy znaków sprintf() (biblioteka stdio.h) void sprintf(char * str, const char * format, typ zmienna); przykład

C/C++ - funkcje standardowe – działanie na znakach ctype.h

int isalnum(int c);

- makro, zwraca wartość różną od 0 jeśli znak jest

literą lub cyfrą

int isalpha(int c);

- makro, zwraca wartość różną od 0 jeśli znak jest

literą

int isascii(int c);

- makro, zwraca wartość różną od 0 jeśli kod

znaku należy do zakresu 0 – 0x7F

int i

sc

s trl(int c

);

- ma

m kro, z

wr

w aca w

a

w rtość

ś r

óż

ó ną

n od

0

od jeśl

ś i kod

znaku należy do zakresu 0x00 - 0x1F

lub jest równy 0x7F (znak sterujący)

int isdigit(int c);

- makro, zwraca wartość różną od 0 jeśli znak jest

cyfrą

int isgraph(int c);

- makro, zwraca wartość różną od 0 jeśli znak jest

znakiem drukowalnym (0x21 – 0x7e)

C/C++ - funkcje standardowe – działanie na znakach ctype.h

int islower(int c);

- makro, zwraca wartość różną od 0 jeśli znak jest

małą literą

int isupper(int c);

- makro, zwraca wartość różną od 0 jeśli znak jest

wielką literą

int isspace(int c);

- makro, zwraca wartość różną od 0 jeśli znak jest

spacją , tabulatorem HT, VT, znakiem

powr

pow otu ka

u

retki C

R

C ,

R z

nakiem

m now

e

now go w

go i

w ersz

s a L

F

int ispunct(int c);

- makro, zwraca wartość różną od 0 jeśli znak jest

spacją lub znakiem interpunkcyjnym

int isxdigit(int c); - makro, zwraca wartość różną od 0 jeśli znak jest cyfrą szesnastkową

int tolower(int c); - zwraca małą literę jeśli argument jest wielką literą, w innym przypadku zwracana jest wartość

argumentu

int toupper(int c); - zwraca wielką literę jeśli argument jest małą literą, w innym przypadku zwracana jest wartość

argumentu

C/C++ - funkcje standardowe – obsługa ekranu i klawiatury

conio.h

int getch(void);

- wczytanie znaku z klawiatury (z bufora)

int getche(void) ; - wczytanie z echem (wczytanie i

wyświetlenie na ekranie)

int putch(int c);

- wyświetlenie znaku, jeśli działanie funkcji się

powiodło, zwraca kod wyświetlonego

znaku, w

w przeciwny

w

m

m pr

zypadku w

dku a

w rtość

ś E

OF

O

int wherex(void);

- odczytanie współrzędnej x pozycji

kursora

int wherey(void);

- odczytanie współrzędnej y pozycji

kursora

void gotoxy(int x, int y);

- ustawienie pozycji kursora w

punkcie (x,y)

void clrscr(void);

- czyszczenie okna

void clreol(void);

- czyszczenie do końca wiersza

void delline(void); - kasowanie linii (tej z kursorem)

C/C++ - funkcje standardowe – obsługa łańcuchów znaków

string.h

Łańcuch znaków – tablica znaków zakończona znakiem null ( \0) (null-terminated)

gets(char *s) - wczytuje ciąg znaków ze stdin (klawiatury) i zapisuje pod adrese

s m

m s

;

s

strcpy (char *przeznaczenie, char *zrodlo) – kopiowanie łańcuchów; strncpy (char *przeznaczenie, char *zrodlo, int n) - kopiuje n znaków; char *strchr(char *s, int c) - zwraca miejsce pierwszego wystąpienia znaku c w ciągu s (null gdy brak);

char *strrchr(char *s, int c) - zwraca miejsce ostatniego wystąpienia znaku c w ciągu s (null gdy brak);

przykład

C/C++ - funkcje standardowe – obsługa łańcuchów znaków

string.h

int strcmp(char *s1,char *s2) - porównanie łańcuchów (na identyczność), 0 jeśli jednakowe;

int strncmp(char *s1,char *s2, int n) – porównanie n pierwszych znaków dwóc

dw

h ł

h ańc

ń uchów

hów (

na i

dentyczność

ś ), 0

j

0 eśl

ś i j

ednakowe

kow ;

strcat(char *s1, char *s2) - łączenie łańcuchów znaków - konkatenacja, wynik w s1;

strncat(char *s1, char *s2, int n) - dołączenie n znaków ciagu s2 do ciagu s1; int strlen(char *s) - zwraca długość łańcucha znaków;

C/C++ - funkcje standardowe – obsługa łańcuchów znaków - string.h

#include <stdio.h>

#include <string.h>

#include <iostream>

przykład

#include <conio.h>

#define N 3

using namespace std;

main ()

{ struct uczen{

char nazwisko[20],imie[15];

int mat, fiz, chem;

}k

} l

k a

l s

a a

s [

a N

[ ]

N ;

]

char pom[20];

printf("Podaj nazwiska %d osob\n",N);

for (int i=0;i<N;i++){

gets(pom);

strcpy(klasa[i].nazwisko,pom);

}

cout<<"\n\n";

for (int i=0;i<N;i++) cout<<klasa[i].nazwisko<<"\n"; int i=strlen(klasa[1].nazwisko);

//dlugosc lancucha

cout<<i;

getch();

return(0);

}

C++ - biblioteka STL – obsługa łańcuchów znaków typ string

W języku C++, w bibliotece o nazwie STL, została zdefiniowana między innymi klasa o nazwie string umożliwiająca deklarację obiektów (zmiennych) tego typu.

Klasa string ułatwia pracę z łańcuchami znaków.

Przykład

#include <iostream>

#include <conio.h>

main ()

{

{

string lan1,lan2;

// deklaracja obiektów

(zmiennych)

lan1="to jest lancuch numer 1";

cout<<lan1;

cout<<"\npodaj lancuch numer 2: ";

cin>>lan2;

getch();

return 0;

}

przykład

C++ - biblioteka STL – obsługa łańcuchów znaków typ string

Zmienne typu string można dodawać (dokonywać konkatenacji) korzystając z operatora +, oraz porównywać na identyczność.

Przykład. Dodawanie łańcuchów znaków.

#include <iostream>

#include <conio.h>

using namespace std;

main ()

{

string lan1,lan2,lan12;

lan1="obsluga ";

lan2="tekstu";

lan12=lan1+lan2;

cout<<lan12;

getch();

przykład

return 0;

}

C++ - biblioteka STL – obsługa łańcuchów znaków typ string

Przykład. Porównywania łańcuchów znaków.

#include <iostream>

#include <conio.h>

using namespace std;

main ()

{

string lan1,lan2,lan12;

lan1="Kasia";

lan2="Kasia";

if (lan1==lan2)

cout<<"lancuchy sa jednakowe";

else

cout<<"lancuchy sa rozne";

getch();

return 0;

przykład

}

C++ - biblioteka STL – obsługa łańcuchów znaków typ string

Operacje na łańcuchach znaków

Z uwagi na to, że zmienne typu string są obiektami klasy string, operacje wykonywane na łańcuchach są realizowane przy pomocy metod, czyli funkcji skojarzonych z klasą string.

Metody są wywoływane w następujący sposób:

zmienna_łańcuchowa.nazwa_funkcji()

length() - określenie długości łańcucha;

Przykład.

#include <iostream>

#include <conio.h>

main ()

{

string lan;

int dl;

lan="Kopernik była kobietą?";

dl=lan.length();

cout<<"dlugosc lancucha: "<<dl; przykład

getch();

return 0;

}

C++ - biblioteka STL – obsługa łańcuchów znaków typ string

insert(int pozycja, string lan) – wstawienie łańcucha lan w miejscu określonym przez zmienną pozycja, indeksowanie znaków w łańcuchu od 0 ; Przykład.

#include <iostream>

#incl

in

ude

cl

<c

< oni

c

o.

oni

h

o. >

main ()

{

string lan="Znaki sa indeksowane od wartości 0"; lan.insert(6,"w lancuchu ");

cout<<lan;

getch();

return 0;

}

przykład

C++ - biblioteka STL – obsługa łańcuchów znaków typ string

char at(int pozycja) – wyjęcie znaku z łańcucha znajdującego się na pozycji pozycja;

do elementów łańcucha można odwoływać się jak do tablicy jednowymiarowej.

Przykład.

#include <iostream>

#incl

in

ude

cl

<c

< oni

c

o.

oni

h

o. >

main ()

{

string lan=”abcdefghijkl";

char ch;

ch=lan.at(3);

cout<<ch;

cout<<lan[3];

getch();

przykład

return 0;

}

C++ - biblioteka STL – obsługa łańcuchów znaków typ string

string substr(int od, int ile) – wyjęcie fragmentu łańcucha o długości ile od pozycji od.

Przykład.

#include <iostream>

#include <conio.h>

main

mai

()

{

string lan1="abcdefghijkl",lan2;

lan2=lan1.substr(0,3);

cout<<lan2;

getch();

return 0;

}

przykład

C++ - biblioteka STL – obsługa łańcuchów znaków typ string

string replace(int od, int ile, string lan) – zastąpienie ile znaków począwszy od znaku o indeksie od łańcuchem lan;

Przykład.

#include <iostream>

#include <conio.h>

main

mai

()

{

string lan1="aaaaaaaa",lan2="bbbb"; lan1.replace(5,4,lan2);

cout<<lan1;

getch();

return 0;

}

przykład