c++, wyklad c7

background image

C/C++

Biblioteki funkcji standardowych

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

math.h – funkcje matematyczne
stdlib.h - funkcje matematyczne i konwersji
ctype.h – konwersja znaków
conio.h – obsługa ekranu
string.h – obsługa ła
ńcuchów znaków
stdio.h – obsługa plików

background image

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

background image

C/C++ - funkcje standardowe

wybrane pliki nagłówkowe

ANSI C

funkcje obsługi ekranu i klawiatury

conio.h

C++

definicje klas umożliwiających realizację
operacji we/wy na plikach

fstream.h

C++

definicje manipulatorów we/wy

iomanip

C++

definicje klas umożliwiających realizację
operacji we/wy

iostream.h

ANSI C

funkcje związane z krajem

local.h

ANSI C

definicje kodów błędów

errno.h

ANSI C

działania na znakach

ctype.h

ANSI C

definicje stałych

stddef.h

ANSI C

systemowe funkcje czasu

time.h

ANSI C

działania na łańcuchach znaków

string.h

ANSI C

funkcje matematyczne i konwersji

stdlib.h

ANSI C

standardowe we/wy

stdio.h

ANSI C

funkcje matematyczne

math.h

Standard

Opis

Nazwa pliku

background image

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 printf( const char *lan_formatu, parametr1,parametr2, ...);

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 łąńcuchu formatującym w miejsce specyfikatorów formatu %c %d %s wstawione
zostaną wartości parametrów z listy ( w kolejności występowania).

background image

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 zmiennoprzecinkowa typu double;

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

background image

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.
Przykład

int x=23;

printf(”%6d”,x);

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

.

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 na polu o szerokości 6 znaków z precyzją 3 cyfr po
przecinku.

background image

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

stdio.h

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

prototyp:
int scanf( const char *lan_formatu, &zmienna1,&zmienna2, ...);

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()
przekazywane są adresy zmiennych.

Przykład

char ch;

int x;

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

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

background image

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;

background image

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

background image

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 sinh(double x);

- sinus hiperboliczny

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 dziesietny

double floor(double x);

- największa liczba całkowita mniejsza od x

double ceil(double x);

- najmniejsza liczba całkowita większa od x

background image

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

background image

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;

max(x,y) - makro, zwraca większą z dwóch liczb, typ dowolny
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

background image

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,

funkcje pokrewne: strtol(), strtoul().

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

przykład

background image

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

background image

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 isctrl(int c);

- makro, zwraca wartość różną od 0 jeśli 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)

int islower(int c);

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

małą literą

background image

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
powrotu karetki CR, znakiem nowego wiersza LF

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

background image

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 przeciwnym przypadku wartość EOF

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)

background image

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 ciag znaków ze stdin (klawiatury) i zapisuje pod

adresem s;

strcpy (char *przeznaczenie, char *zrodlo) – kopiowanie łąń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);

background image

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óch łańcuchów (na identyczność), 0 jeśli jednakowe;

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;

background image

#include <stdio.h>

#include <string.h>

#include <iostream>

#include <conio.h>

#define N 3

using namespace std;

main ()

{ struct uczen{

char nazwisko[20],imie[15];

int mat, fiz, chem;

}klasa[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/C++ - funkcje standardowe – obsługa łańcuchów

znaków - string.h

przykład

background image

C/C++ - funkcje standardowe – obsługa plików - stdio.h

FILE *wsk_do _pliku

- deklaracja wskaźnika do pliku (uchwytu);

FILE *fopen(nazwa pliku, tryb otwarcia) - otwarcie pliku;

int fclose(wsk_pliku) - zamknięcie pliku
inf fcloseall(void) – zamknięcie wszystkich plików poza standardowymi,

Formatowany zapis/odczyt

int fprintf(FILE *wsk_pliku, format, argument ..) - zapis do pliku

wskazywanego przez wsk_pliku;

int fscanf(FILE *wsk_pliku, format, argument ..) - odczyt z pliku

wskazywanego przez wsk_pliku;

background image

C/C++ - funkcje standardowe – obsługa plików - stdio.h

Podstawowe funkcje zapisu/odczytu

int fgetc(FILE *wsk_pliku) - odczytuje znak z pliku,

int fputc(int c, FILE *wsk_pliku) - zapisuje znak do pliku,

int fgets( char *str, int n FILE *wsk_pliku) - odczytuje łańcuch n-1 znaków

z pliku,

int fputs(const char *str, FILE *wsk_pliku) - zapisuje łańcuch znaków do

pliku,

int getw(int w, FILE *wsk_pliku) - odczytuje liczbę typu int z pliku,

int putw(FILE *wsk_pliku) - zapisuje liczbę typu int do pliku.

background image

C/C++ - funkcje standardowe – obsługa plików - stdio.h

Tryby otwarcia plików

b - plik binarny , t - plik tekstowy

r – otwarcie w trybie tylko do odczytu,
w - otwarcie w trybie tylko do zapisu, jeśli plik istniał to zostanie

nadpisany,

a - otwarcie w trybie dopisywania (na końcu) , jeśli plik nie istniał to

zostanie utworzony,

r+ – otwarcie w trybie do modyfikacji (odczyt i zapis),
w+ – otwarcie w trybie do modyfikacji (odczyt i zapis), jeśli plik

istniał zostanie nadpisany,

a+ – otwarcie w trybie do modyfikacji (odczyt i zapis), ustawienie

wskaźnika na końcu pliku, jeśli plik

nie istniał zostanie

utworzony.

background image

C/C++ - funkcje standardowe – obsługa plików - stdio.h

// Operacje na plikach tekstowych

#include <conio.h>

#include <stdio.h>

int main(void)

{

FILE *in, *out; //deklaracje wska

ź

ników do plików

char ch;

in = fopen("d:\\appl.dos\\TC\\programy\\for.cpp", "rt");

out = fopen("d:\\appl.dos\\TC\\programy\\for1.cpp", "wt");

while (!feof(in)){

// feof() 1-kiedy koniec pliku

ch=fgetc(in);

putch(ch);

fputc(ch,out);

}

fclose(in);

fclose(out);

getch();

return 0;

}

przykład

background image

// Operacje na plikach tekstowych

#include "losowanie.c"

#include <stdio.h>

#include <math.h>

#include <stdlib.h>

#include <conio.h>

int main(void)

{

const int N=20;

FILE *out;

int wek[N],wek1[N],x;

randomize;

for(int i=0;i<N;i++) wek[i]=random(N);

out = fopen("d:\\appl.dos\\TC\\programy\\dane", "wb");

for(int i=0;i<N;i++) fprintf(out,"%d\n",wek[i]);

fclose(out);

out= fopen("d:\\appl.dos\\TC\\programy\\dane", "rb");

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

fscanf(out,"%d",&x);

wek1[i]=x;

}

fclose(out);

for(int i=0;i<N;i++) printf("%d ",wek1[i]);

getch();

return 0;

}

przykład


Wyszukiwarka

Podobne podstrony:
c++ wyklad c7
Złamania i zwichnięcia C3 - C7, Wykłady
Napęd Elektryczny wykład
wykład5
Psychologia wykład 1 Stres i radzenie sobie z nim zjazd B
Wykład 04
geriatria p pokarmowy wyklad materialy
ostre stany w alergologii wyklad 2003
WYKŁAD VII
Wykład 1, WPŁYW ŻYWIENIA NA ZDROWIE W RÓŻNYCH ETAPACH ŻYCIA CZŁOWIEKA
Zaburzenia nerwicowe wyklad
Szkol Wykład do Or
Strategie marketingowe prezentacje wykład
Wykład 6 2009 Użytkowanie obiektu
wyklad2
wykład 3

więcej podobnych podstron