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
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.
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