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
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.
C/C++ - funkcje standardowe wybrane pliki nagłówkowe Nazwa pliku math.h stdio.h stdlib.h conio.h string.h time.h stddef.h ctype.h errno.h local.h iostream.h iomanip fstream.h funkcje matematyczne standardowe we/wy funkcje matematyczne i konwersji funkcje obsługi ekranu i klawiatury działania na łańcuchach znaków systemowe funkcje czasu definicje stałych działania na znakach Opis definicje kodów błędów funkcje związane z krajem definicje klas umoŝliwiających realizację operacji we/wy definicje manipulatorów we/wy definicje klas umoŝliwiających realizację operacji we/wy na plikach Standard ANSI C ANSI C ANSI C ANSI C ANSI C ANSI C ANSI C ANSI C ANSI C ANSI C C++ C++ C++
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).
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 %.
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.
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.
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; return 0; } 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); 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 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
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); liczb x i y - pierwiastek z sumy kwadratów
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
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(). 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().
C/C++ - funkcje standardowe działanie na znakach ctype.h int isalnum(int c); int isalpha(int c); int isascii(int c); int isctrl(int c); int isdigit(int c); int isgraph(int c); int islower(int c); - makro, zwraca wartość róŝną od 0 jeśli znak jest literą lub cyfrą - makro, zwraca wartość róŝną od 0 jeśli znak jest literą - makro, zwraca wartość róŝną od 0 jeśli kod znaku naleŝy do zakresu 0 0x7F - 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) - makro, zwraca wartość róŝną od 0 jeśli znak jest cyfrą - makro, zwraca wartość róŝną od 0 jeśli znak jest znakiem drukowalnym (0x21 0x7e) - makro, zwraca wartość róŝną od 0 jeśli znak jest małą literą
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
C/C++ - funkcje standardowe obsługa ekranu i klawiatury conio.h int getch(void); int getche(void) ; int putch(int c); int wherex(void); int wherey(void); kursora void gotoxy(int x, int y); - wczytanie znaku z klawiatury (z bufora) - wczytanie z echem (wczytanie i wyświetlenie na ekranie) - wyświetlenie znaku, jeśli działanie funkcji się powiodło, zwraca kod wyświetlonego znaku, w przeciwnym przypadku wartość EOF - odczytanie współrzędnej x pozycji kursora - odczytanie współrzędnej y pozycji - 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 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);
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;
C/C++ - funkcje standardowe obsługa łańcuchów znaków - string.h #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); } przykład
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;
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.
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.
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)){ ch=fgetc(in); putch(ch); fputc(ch,out); } fclose(in); fclose(out); getch(); return 0; } // feof() 1-kiedy koniec pliku przykład
// Operacje na plikach tekstowych #include "losowanie.c" #include <stdio.h> przykład #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; }