Knihovní funkce jazyka C



Podobné dokumenty
Popis funkcí a maker standardních knihoven

Práce s řetězci. IUJCE Přednáška č. 10. string.h. vrací: délku řetězce str (bez '\0')

10 Práce s řetězci - pokračování

Bitové operátory a bitová pole. Úvod do programování 2 Tomáš Kühr

Střední škola pedagogická, hotelnictví a služeb, Litoměříce, příspěvková organizace

Vstup a výstup datové proudy v C

Programování v jazyce C

awk programovatelný filtr

Lekce 9 IMPLEMENTACE OPERAČNÍHO SYSTÉMU LINUX DO VÝUKY INFORMAČNÍCH TECHNOLOGIÍ JAZYK C

Pole a Funkce. Úvod do programování 1 Tomáš Kühr

Základní stavební prvky algoritmu

Cílem kapitoly je seznámit studenta se strukturou programu a jeho překladem.

Návrh a tvorba WWW stránek 1/38 PHP

Jazyk C práce se soubory. Jan Hnilica Počítačové modelování 16

8. lekce Úvod do jazyka C 3. část Základní příkazy jazyka C Miroslav Jílek

Registrace programů VIS

Hotelová škola, Obchodní akademie a Střední průmyslová škola Teplice,Benešovo náměstí 1, příspěvková organizace

Algoritmizace a programování

3 Vývojová prostředí, základní prvky jazyka Java, konvence jazyka Java

Správné vytvoření a otevření textového souboru pro čtení a zápis představuje

Měřící systém se vzdáleným přístupem. Příručka skriptovacího jazyka

2 Základní funkce a operátory V této kapitole se seznámíme s použitím funkce printf, probereme základní operátory a uvedeme nejdůležitější funkce.

Základy programování (IZP)

Stromy, soubory. BI-PA1 Programování a Algoritmizace 1. Ladislav Vagner, Josef Vogel

Soubory a databáze. Soubor označuje množinu dat, která jsou kompletní k určitému zpracování a popisují vybrané vlastnosti reálných objektů

vstup a výstupv jazyce C

KÓDOVÝ ZÁMEK 1105/2 A 1156/10

NÁVOD K HODINKÁM S KAMEROU 1. Úvod Dostává se Vám do rukou kamera s mikrofonem, záznamem obrazu a zvuku skrytá v náramkových hodinkách.

Algoritmizace a programování

NÁVOD K OBSLUZE MODULU VIDEO 64 ===============================

Výtah z Učebnice jazyka C

Zápis znakù pomocí výjimkových kódù

Uživatelská dokumentace

Android Elizabeth. Verze: 1.3

vstup a výstupy jazyce C

vstup a výstupy jazyce C

-1- N á v r h ČÁST PRVNÍ OBECNÁ USTANOVENÍ. 1 Předmět úpravy

řadič počítače část(jednotka) počítače/procesoru,

5. Ř etězce (třída String)

- regulátor teploty vratné vody se záznamem teploty

Obsah. Používání dálkového ovladače Beo4, 3. Popis tlačítek dálkového ovladače Beo4, 4 Běžná a rozšířená obsluha tlačítky dálkového ovladače Beo4

Uložené procedury Úvod ulehčit správu zabezpečení rychleji

Standardní vstupy a výstupy procesu filtry

Souborové operace Mgr. Josef Horálek

8. Struktura údaj na LCD displeji

Používání klávesnice. Zobrazit vše. V tomto článku

Zámkový systém pro trez ory

Programování v jazyce C

Junior Plus 2/4/6/8 NÁVOD K POUŽITÍ ŘÍDÍCÍ PŘÍSTROJ SE DVĚMA PROGRAMY PRO INTERNÍ MONTÁŽ, S HLAVNÍM VENTILEM/ START ČERPADLA & KALKULACE SPOTŘEBY VODY

účetních informací státu při přenosu účetního záznamu,

Návod na obsluhu Pípáku verse V0.51 (PŘEDBĚŽNÝ NÁVOD).

Obsah. Úvodem 9 Komu je kniha určena 9 Forma výkladu 9 Konkrétní postup výuky 10 Příklady ke knize 11

TRANSFORMACE. Verze 4.0

12. Správa souborů. ZOS 2006, L. Pešička

Otázky k teoretické části zkoušky z předmětu IAJCE 2006/2007

Úvod Petr Kropík viz:

Microsoft Office Project 2003 Úkoly projektu 1. Začátek práce na projektu 1.1 Nastavení data projektu Plánovat od Datum zahájení Datum dokončení

Stručný přehled základní syntaxe jazyka C

ALFACO s.r.o. IR33S Carel str. 1 IR33S CAREL NÁVOD NA SEŘÍZENÍ

SimOS. Jakub Doležal Radek Hlaváček Michael Očenášek Marek Reimer

PB071 Programování v jazyce C

Uživatelská dokumentace

Křížově zesíťovaná smršťovací spojka pro předizolované potrubní systémy

1 Seznámení s Word 2010, karty, nejčastější činnosti. 2 Tvorba dokumentu

for (i = 0, j = 5; i < 10; i++) { // tělo cyklu }

Prvky kompletní instalace. D: LUMI LED maják. Odblokování

Aktivity s GPS 3. Měření některých fyzikálních veličin

Zálohování a obnova Uživatelská příručka

Vytvoření nebo odstranění makra Excel

Sada 2 Microsoft Word 2007

Elektrická měření 4: 4/ Osciloskop (blokové schéma, činnost bloků, zobrazení průběhu na stínítku )

VYHLÁŠKA ze dne. června 2009 o stanovení podrobností užívání a provozování informačního systému datových schránek

Návod k montáži a obsluze RJ 10

1.2.5 Reálná čísla I. Předpoklady:

Databázovéa informačnísystémy NÁVRH IMPLEMENTACE 2 KONZISTENCE DATABÁZE

Příprava na 1. čtvrtletní písemku pro třídu 1EB

Vzdělávací program pro obchodní partnery společnosti ROCKWOOL průvodce školením

Novinky verzí SKLADNÍK 4.24 a 4.25

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT. Cyklus while, do-while, dělitelnost, Euklidův algoritmus

Šicí stroje NX-400 NX-200

1 Matematické základy teorie obvodů

Zabezpečení Uživatelská příručka

Základy programování (IZP)

DUM 05 téma: Základy obsluha Gimp

6. Příklady aplikací Start/stop Pulzní start/stop. Příručka projektanta VLT AQUA Drive

LED_007.c Strana: 1/5 C:\Michal\AVR\Výukové programy\archiv\ Poslední změna: :01:48

4 Část II Základy práce v systému. 6 Část III Úvodní obrazovka. 8 Část IV Práce s přehledy. 13 Část V Kontakty. 19 Část VI Operativa

TECHNICKÁ DOKUMENTACE NA PC

Operační systém z hlediska procesu Mgr. Josef Horálek

Programování 1. hodina. RNDr. Jan Lánský, Ph.D. Katedra informatiky a matematiky Fakulta ekonomických studií Vysoká škola finanční a správní 2015

Žáci mají k dispozici pracovní list. Formou kolektivní diskuze a výkladu si osvojí grafickou minimalizaci zápisu logické funkce

Strukturu lze funkci předat: (pole[i])+j. switch(výraz) velikost ukazatele

Automatická regulace hoření Reg 200

VULCAN BOX FURNACE s programovatelným ovládáním

Pokud se vám tyto otázky zdají jednoduché a nemáte problém je správně zodpovědět, budete mít velkou šanci v této hře zvítězit.

INTERNETOVÝ TRH S POHLEDÁVKAMI. Uživatelská příručka

MIDAM UC 250 modbus regulátor topení a chlazení s Ethernet rozhraním, otočné tlačítko, RTC, 2xDO, 2x DI

Modul Řízení objednávek.

PocketHome R CENTRÁLNÍ OVLÁDÁNÍ VYTÁPĚNÍ VAŠEHO DOMU KOORDINÁTOR

Manuál uživatele čipové karty s certifikátem

Transkript:

Knihovní funkce jazyka C Petr Šaloun 10. listopadu 2003 PJCPP Knihovní funkce jazyka C 6-1

Popis funkcí a maker standardních knihoven <assert.h> Makro používané při ladění. <ctype.h> Práce se znaky. isalnum() isalpha() iscntrl () isdigit () isgraph() islower () isprint () ispunct() isspace() isupper() isxdigit () tolower() toupper() číslice nebo malá či velká písmena malá či velká písmena řídící znaky číslice znaky s grafickou podobou malá písmena tisknutelné znaky interpunkční znaky bílé znaky velká písmena hexadecimální číslice konverze velkých pímen na malá konverze malých písmen na velká PJCPP Knihovní funkce jazyka C 6-2

<math.h> sin(x) cos(x) tan(x) asin(x) acos(x) atan(x) atan2(x,y) sinh(x) cosh(x) tanh(x) exp(x) log(x) log10(x) pow(x,y) sqrt(x) ceil (x) floor (x) fabs((x) ldexp(x,n) frexp(x, exp) modf(x, n) fmod(x,n) sin(x) cos(x) tan(x) arcsin(x) arccos(x) arctan(x) arkustangents x, y sinh(x) cosh(x) tanh(x) e x ln(x) log(x) x y (x) y Z, y x, nejmenší y Z, y x, největší x x 2 n x = m 2 e xp x na celou n a desetinou část reálný zbytek po dělení x/y PJCPP Knihovní funkce jazyka C 6-3

1. Argumenty matematických funkcí a návratové hodnoty jsou typu double. 2. Při chybě je v errno EDOM - vstup mimo definiční obor funkce. ERANGE - Výstup HUGE VAL nebo 0.0. PJCPP Knihovní funkce jazyka C 6-4

i n t i double g, f ; p r i n t f ( % f \ n, c e i l ( 3. 1 4 ) ) ; 4.000000 p r i n t f ( % f \ n, f l o o r ( 3. 1 4 ) ) ; 3.000000 f = f r e x p ( 3. 1 4, &g ) ; p r i n t f ( % f x 2ˆ%d \ n, f, i ) ; 0.785000 x 2 ˆ 2 f = modf( 3.14, &g ) p r i n t f ( % f + % f \n, g, f ) ; 3.000000 p r i n t f ( % f \ n, fmod ( 3. 1 4, 2. 0 ) ) ; 1.140000 PJCPP Knihovní funkce jazyka C 6-5

<locale.h> Přízpůsobení C národnímu prostředí. Problémy znaková sada, např. isupper(š), desetinná tečka versus naše desetinná čárka, zápisu času a data, např. 10. 6. 1995, nebo 6-10-1995, či July 10, 1995. setlocale () localeconv() nastavuje vrací PJCPP Knihovní funkce jazyka C 6-6

<setjmp.h> Umožnění dlouhých skoků. setjmp() longjmp() připraví podmínky a návratový bod provede nelokální skok. Funkce setjmp() uloží a funkce longjmp() obnoví obsah potřebných registrů procesoru, typ je jmp buf. Princip jednotné reakce na chybu s následným restartem programu. # i n c l u d e < s t d i o. h> # i n c l u d e < setjmp. h> void chyba ( void ) ; / f u n k c n i p r o t o t y p / jmp buf hlavni smycka ; / g l o b a l n i promenna / i n t main ( void ) { i n t i, j ; p r i n t f ( Zacatek programu \n ) ; hlavni smycka = setjmp ( ) ; PJCPP Knihovní funkce jazyka C 6-7

do { p r i n t f ( Zadej dve c i s l a : ) ; scanf ( %d %d, & i, & j ) ; i f ( j! = 0 ) p r i n t f ( %d /%d=%d\n, i, j, i / j ) ; else chyba ( ) ; } while ( i! = 0 ) ; } void chyba ( void ) { p r i n t f ( Chyba nulovy d e l i t e l \ n\n ) ; longjmp ( hlavni smycka, 1 ) ; } void chyba ( jmp buf k a m s e v r a t i t, char chybova { p r i n t f ( Chyba: % s\n, chybova zprava ) ; longjmp ( k a m s e v r a t i t, 1 ) ; } PJCPP Knihovní funkce jazyka C 6-8

<signal.h> Zpracování signálu. signal () raise () zavede novou obsluhu signálu vyšle signál programu # i n c l u d e < s t d i o. h> # i n c l u d e < s i g n a l. h> # i n c l u d e < setjmp. h> # d e f i n e POCET POKUSU 2 # d e f i n e vynech 5000 / znak se v y p i s u j e jednou za vynech / jmp buf navrat ; char vypisovany znak = # ; void obsluha signalu ( i n t nevyuzity parametr ) { s t a t i c i n t pocet vstupu = 0 ; pocet vstupu ++; i f ( pocet vstupu <= pocet pokusu ) { p r i n t f ( \ n%d : A zrovna ne \ n, pocet vstupu ) ; vypisovany znak + + ; } longjmp ( navrat, pocet vstupu ) ; } PJCPP Knihovní funkce jazyka C 6-9

i n t main ( void ) { long i n t i = 0 ; i n t pid ; void ( s t a r a a d r ) ( i n t ) ; / zavedeni nove adresy obsluhy SIGQUIT / s t a r a a d r = s i g n a l ( SIGQUIT, obsluha signalu ) ; / z i s k a n i i d e n t i f i k a c n i h o c i s l a procesu / pid=getpid ( ) ; p r i n t f ( \ npid =%d \ n\n, pid ) ; p r i n t f ( Zadej t r i k r a t p r i k a z : k i l l %d %d \ n, SIGQUIT, pid ) ; i f ( setjmp ( navrat ) < pocet pokusu ) { while ( 1 ) { i f (++ i % vynech = = 0 ) { putchar ( vypisovany znak ) ; f f l u s h ( s t d o u t ) ; } } } p r i n t f ( \ n Tak tedy ano... \ n ] ; / obnoveni puvodni adresy obsluhy SIGQUIT / s i g n a l ( SIGQUIT, s t a r a a d r ) ; } PJCPP Knihovní funkce jazyka C 6-9

<stdarg.h> Práce s proměnným počtem parametrů. va start () va arg() va end() nastaví na začátek dá další položky seznamu ukončí práci se seznamem <stdio.h> Funkce pro vstup a výstup. PJCPP Knihovní funkce jazyka C 6-10

fopen() freopen() fflush () fclose () remove() rename() tmpfile () tmpnam() setbuf() setvbuf() fprintf () printf () sprintf () vfprintf () vprintf () vsprintf () fscanf () scanf() sscanf() vfscanf() vsscanf() fgetc () getc() fputs () puts() getchar() otevírá soubor přesměruje otevřený soubor do jiného souboru zapíše obsah bufferu do souboru uzavře soubor vymaže soubor přejmenuje soubor vytvoří dočasný soubor vytvoří dočasné jméno souboru změní buffer změní buffer a způsob práce s ním zapisuje formátovaně do souboru zapisuje formátovaně do stdout zapisuje formátovaně do řetězce zapisuje do souboru proměnný počet parametrů zapisuje do stdout proměnný počet parametrů zapisuje do řetězce proměnný počet parametrů čte formátovaně ze souboru čte formátovaně ze stdin čte formátovaně z řetězce čte ze souboru proměnný počet parametrů čte ze stdin proměnný počet parametrů čte znak ze souboru - vždy funkce čte znak ze souboru - může být makro zapisuje řetězec do souboru zapisuje řetězec do stdout čte znak ze stdin PJCPP Knihovní funkce jazyka C 6-10

<stdio.h> Funkce pro vstup a výstup (dokončení) fread() čte neformátovaně ze souboru fwrite () zapisuje neformátovaně do souboru fseek() přesune se v souboru ftell () vrátí pozici aktuálního místa v souboru rewind() přesune se na začátek souboru fgetpos() uloží pozici aktuálního místa v souboru fsetpos() vrátí se na uloženou pozici v souboru clearerr () nuluje indikátor chyby a konce souboru feof () testuje příznak konce souboru ferror () testuje příznak chyby práce se souborem perror () tiskne chybu podle obsahu errno PJCPP Knihovní funkce jazyka C 6-11

<stdlib.h> Obecně využitelné funkce. atof () atoi () atol () strtod () strtol () strtoul () rand() srand() calloc () malloc() realloc () free () abort() exit () atexit () system() getnev() bsearch() qsort () abs() labs() div(x, y) ldiv (x, y) konverze řetězce na double konverze řetězce na int konverze řetězce na long int konverze řetězce na double konverze řetězce na long int konverze řetězce na unsigned long int generátor náhodného čísla inicializace generátoru náhodného čísla alokace dynamické paměti pro pole objektů alokace bloku dynamické paměti změna velikosti bloku dynamické paměti uvolnění dynamické paměti nestandardní ukončení programu standardní ukončení programu registrace ukončující funkce volání systémového příkazu poskytnutí informace o systémové proměnné binární vyhledávání třídění logaritmem quick sort absolutní hodnota typu int absolutní hodnota typu long int x/y a x%y současně pro typy int x/y a x%y současně pro typy long int PJCPP Knihovní funkce jazyka C 6-12

Konverze řetězců na čísla Poznámka: ISO C nedefinuje opačné funkce, tj. pro převod čísel na řetězce, např. itoa(). V těchto případech je nutno použít funkci sprintf (). char s, chyba ; long i n t 1 ; s = 1 2 3 4 5 6 7 ; l = a t o l ( s ) ; p r i n t f ( s=%s l = % l d \n, s, l ) ; / s =1234567 l =1234567 / s = 1234567 ; l = s t r t o l ( s, & chyba, 1 0 ) ; p r i n t f ( s=%s l = % l d \n, s, l ) ; / s =1234567 l =1234567 / s = f f f f ; l = s t r t o l ( s, & chyba, 1 6 ) ; p r i n t f ( s=%s l = % l d \ n, s, l ) ; / s= f f f f l =65535 / PJCPP Knihovní funkce jazyka C 6-13

s = 0xFGFFF l = s t r t o l ( s, & chyba, 1 6 ) ; p r i n t f ( s=%s l=%l d \ nchybny znak : % s \ n, s, l, chyba ) ; / s = 0xFGFFF l = 1 5 / s = 1111111111111111; l = 1 5 ; / chybny znak : GFFF / l = s t r t o l ( s, & chyba, 2 ) ; p r i n t f ( s=%s \n l = % l d \ n, s, l ) ; / s = 11111111111111111 l = 6 5 5 3 5 / PJCPP Knihovní funkce jazyka C 6-14

Generátor pseudonáhodných čísel Používají se dvě funkce: 1. int rand(void) Rozsah < 0, RAND MAX), při každém spuštění programu je posloupnost stejná. Použití: rand() % rozsah, např. rand() % 20 # d e f i n e r e a l r a n d ( ) \ ( ( double ) rand ( ) / ( RAND MAX+ 1. 0 ) ) 2. void srand(unsigned int start ) Inicializuje generátor rand() počáteční hodnotou start. PJCPP Knihovní funkce jazyka C 6-15

# i n c l u d e < s t d i o. h> # i n c l u d e < time. h> i n t main ( void ) { i n t i ; srand ( ( unsigned ) time (NULL ) ) ; p r i n t f ( \ ndeset nahodnych c i s e l od 0 do 99\n ) ; f o r ( i = 0 ; i <10; i ++) p r i n t f ( %2d, rand ( ) % 1 0 0 ) ; } PJCPP Knihovní funkce jazyka C 6-16

Funkce pracující s dynamickou pamětí Funkce typu malloc(). Funkce pro spolupráci s operačním systémem Funkce abort() nestandardně ukončí program, tzn. že nezapisuje buffery, nemaže dočasné soubory, nespouští funkce registrované pomocí atexit (), atd. V UNIXU se snaží zavřít soubory a generuje soubor core. Funkce atexit () zaregistruje funkci stop funkce(). Zaregistrovaná funkce se spustí po ukončení funkce main(). Lze jich zaregistrovat až 32; jsou volány v obráceném pořadí, než byly registrovány. PJCPP Knihovní funkce jazyka C 6-17

# i n c l u d e < s t d i o. h> # i n c l u d e < s t d l i b. h> void e x i t f n 1 ( void ) { p r i n t f ( 1. e x i t f u n k c e \n ) ; } void e x i t f n 2 ( void ) { p r i n t f ( 2. e x i t f u n k c e \ n ) ; } i n t main ( void ) { p r i n t f ( Zacatek & r e g i s t r a c e e x i t f n \ n ) ; a t e x i t ( e x i t f n 1 ) ; a t e x i t ( e x i t f n 2 ) ; p r i n t f ( Konec programu \ n ) ; } Program vypíše: Zacatek & r e g i s t r a c e Konec programu 2. e x i t f u n k c e 1. e x i t f u n k c e e x i t f n PJCPP Knihovní funkce jazyka C 6-18

Funkce exit () Standardně ukončí provádění programu, funguje jako příkaz return v main(), tzn. zapíší se buffery, uzavřou se soubory, volají se všechny funkce registrované pomocí atexit (), mažou se dočasné soubory, atd. i f ( ( f r =fopen ( nesmysl. dat, r ) ) = = NULL ) { p r i n t f ( Soubor n e e x i s t u j e \ n ) ; e x i t ( 1 ) ; } PJCPP Knihovní funkce jazyka C 6-19

Funkce system() vyvolá z programu příkaz operačního systému. # include <s t d i o. h> # include <s t d l i b. h> i n t main ( void ) { p r i n t f ( Vyvolani prikazu d i r z programu \ n ) ; system ( d i r. t x t ) ; } PJCPP Knihovní funkce jazyka C 6-20

Funkce pro hledání a třídění Používá se funkce: void q s o r t ( void p o l e t r i d, s i z e t n prv, s i z e t v e l p r v, i n t ( porov fce ) ( const void, const void ) ) ; a porov fce() vrací: < 0 je-li první parametr menší než druhý, 0 jsou-ji parametry shodné, > 0 je-li první parametr větší než druhý. Binární vyhledávání v setříděném poli void bsearch ( const void k l i c, const void p o l e t r i d, s i z e t n prv, s i z e t v e l p r v, i n t ( porov fce ) ( const void, const void ) ) ; PJCPP Knihovní funkce jazyka C 6-21

<string.h> strcpy () strncpy() strcat () strncat () strcmp() strncmp() strchr () strrchr () strstr () strlen () strspn() strcspn() strpbrk () strerror () strtok () memcpy() memmove() memcmp() memchr() memset() kopírování řetězce kopírování řetězce s omezením délky spojení řetězců spojení řetězců porovnání řetězců porovnání řetězců hledání znaku v řetězci hledání znaku v řetězci od jeho konce hledání podřetězce v řetězci aktuální délka řetězce hledání prvního rozdílného znaku hledání prvního shodného znaku počet rozdílných znaků poskytnutí chybového hlášení dělení řetězce na části kopírování bloků bajtů jako memcpy(), bloky se mohou překrývat porovnání bloků bajtů hledání znaku v bloku bajtů vyplnění bloku bajtů konstantou PJCPP Knihovní funkce jazyka C 6-22

# i n c l u d e < s t d i o. h> # i n c l u d e < s t r i n g. h> i n t main ( void ) { char s1 = nazdar ahoj, dobry den ; char s2 = qwx radzan ; char s3 = qwxr ; char s4 = od ; i n t pozice ; char p c ; pozice= s t r s p n ( s1, s2 ) ; p r i n t f ( Prvnich %d znaku s1 j e v s2\n, pozice ) pozice= strcspn ( s1, s3 ) ; p r i n t f ( Prvnich %d znaku s1 neni v s3\n, pozic p c= s t r p b r k ( s1, s4 ) ; i f ( p c! = NULL) p r i n t f ( Prvni shodny znak s1 a s4 : % c\n, p c ) else p r i n t f ( Zadny shodny znak \ n ) ; p c = s t r t o k ( s1,, ) ; / mezera, carka pomlcka i f ( p c! = NULL) p r i n t f ( %s \ n, p c ) ; PJCPP Knihovní funkce jazyka C 6-23

while ( ( p c = s t r t o k (NULL,, ) )! = NULL) p r i n t f ( %s\n, p c ) ; } Program vypíše: Prvnich 8 znaku s1 j e obsazeno v s2 prvnich 5 znaku s1 neni obsazeno v s3 Prvni shodny znak : d nazdar ahoj dobry den PJCPP Knihovní funkce jazyka C 6-23

# i n c l u d e < s t d i o. h> # i n c l u d e < s t r i n g. h> # d e f i n e delka 1000 i n t main ( void ) { i n t a [ delka ], b [ delka ] ; i n t i, p i ; memset ( ( void ) a, 0, ( s i z e t ) ( delka s i z e o f ( i n t ) ) p r i n t f ( memset : a[%d ] = % d \ n, delka / 2, a [ delk a [ delka / 2 ] = 1 ; p i = ( i n t ) memchr ( ( void ) a, 1, ( s i z e t ) ( delk p r i n t f ( memchr : i=%u \ n, p i a ) ; memcpy ( ( void ) b, ( void a, ( s i z e t ) ( delka s i z e o f ( i p r i n t f ( memcpy : b[%d]=%d \ n, delka / 2, b [ delka f o r ( i = 1 ; i < 9 ; i ++) a [ i ]= i 1; f o r ( i = 0 ; i < 9 ; i ++) p r i n t f ( a[%d]=%d, i, a [ i ] ) ; p r i n t f ( \nmemmove : \ n ) ; PJCPP Knihovní funkce jazyka C 6-24

memmove( ( void ) & a [ 0 ], ( void ) & a [ 1 ], ( s i z e t ) ( 9 s i z e o f ( i n t ) ) ) ; f o r ( i = 0 ; i < 9; i ++) p r i n t f ( a[%d]=%d, i, a [ i ] ) ; } PJCPP Knihovní funkce jazyka C 6-24

memset : a [ 5 0 0 ] = 0 memchr : i =500 memcpy : b [ 5 0 0 ] = 1 a [ 0 ] = 0 a [ 1 ] = 0 a [ 2 ] = 1 a [ 3 ] = 2 a [4]=3 a [ 5 ] = 4 a [ 6 ] = 5 a [ 7 ] = 6 a [8]=7 remove : a [ 0 ] = 0 a [ 1 ] = 1 a [ 2 ] = 3 a [ 3 ] = 3 a [4]=4 a [ 5 ] = 5 a [ 6 ] = 6 a [ 7 ] = 7 a [8]=0 PJCPP Knihovní funkce jazyka C 6-25

<time.h> Práce s datem a časem. clock() tiků procesoru time() sekund od 1. ledna 1970 difftime () rozdíl dvou časů mktime() práce s položkami času asctime() složky času do řetězce ctime() počet sekund na řetězec gmtime() počet sekund na čas localtime () složky času z počtu sekund strftime () form. složky času do řetězce počet procesorových tiků za sekundu, obvykle long, pro funkci clock(), obvykle long, pro ostatní funkce než clock(), pro uložení složek času. PJCPP Knihovní funkce jazyka C 6-26

Struktura tm obsahuje tyto položky: int tm sec sekundy (0, 59) int tm min minuty (0, 59) int tm hour hodiny (0, 23) int tm mday den v měsíci (1, 31) int tm mon měsíc od ledna (0, 11) int tm year roky od 1970 (0, ) int tm wdaz dny do neděle (0, 6) int tm ydaz počet dnů od 1. ledna (0, 365) int tm isdst příznak letního času c l o c k t zac, konec ; zac = clock ( ) ; konec = clock ( ) ; p r i n t f ( program t r v a l : %f [ sec ] \ n, ( konec zac ) / ( double ) c l k t c k ) ; t i m e t pocet sec, n sec ; pocet sec = time (& n sec ) ; pocet sec = time (& pocet sec ) ; pocet sec = time (NULL ) ; PJCPP Knihovní funkce jazyka C 6-27

s t r u c t tm tm promenna, p tm ; t i m e t cas ; time (& cas ) ; tm promenna = l o c a t l i m e (& cas ) ; / p r i r a z e n i s t r i f ( tm promenna. tm min = = 2 ) p tm = l o c a l t i m e (& cas ) ; / p r i r a z e n i ukazate i f ( p tm >tm min ==2)... Mon Jun 19 16:00:14 1995 t i m e t t ; time (& t ) ; p r i n t f ( %s\n, asctime ( l o c a l t i m e (& t ) ) ) ; p r i n t f ( %s\n, ctime (& t ) ) ; Program vypíše: Mon Jun 19 16:00:14 1995 Mon Jun 19 16:00:14 1995 PJCPP Knihovní funkce jazyka C 6-28

# i n c l u d e < s t u d i o. h> # i n c l u d e < time. h> # d e f i n e posun 20000 i n t main ( void ) { s t r u c t tm p pak ; t i m e t ted ; char dny [ ] = { Ne, Po, Ut, St, Ct, Pa, So } time (& ted ) ; p pak= l o c a l t i m e ( & ted ) ; p pak >tm min + = posun ; mktime ( p pak ) ; p r i n t f ( Za %d bude %s. \ n, posun, dny [ p pak >tm wday ] ) ; PJCPP Knihovní funkce jazyka C 6-29

Příklad: Následující program bude pokračovat ve své činnosti dnes ve 20 hodin plus tolik minut, kolik je nyní, plus ještě 15 minut. s t r u c t tm p pak ; t i m e t ted, spusteni ; time (& ted ) ; p pak = l o c a l t i m e (& ted ) ; p pak >tm min + = 1 5 ; / p r i r u s t k o v e / p pak >tm hour = 2 0 ; / a b s o l u t n i / spusteni = mktime ( p pak ) ; while ( d i f f t i m e ( time (NULL ), spusteni ) < 0 ) / prazdny cyklus cekani / PJCPP Knihovní funkce jazyka C 6-30