Štruktúra programu/Funkciı́ smernı́k do štruktúry pointer ->clen oddelenie bloku { } #include <filename> vložı́ knižničné súbory inkrementácia, dekrementácia ++, -- komentáre /* */ #include "filename" vložı́ užı́vateľské súbory plus, minus, logical not, bitwise not +, -, !, ~ opustenie switch, while, do, for break #define meno value definı́cia makra/konštanty hodnota cez smernı́k, adresa *pointer , &meno ďalšia iterácia while, do, for continue typ fnc(typ 1 ,. . . ) deklarácia funkcie typová konverzia (typ) vyraz návrat z funkcie return vyraz typ meno deklarácia externej premennej zistenie veľkosti sizeof ukončenie vykonávania exit(arg) main() { hlavná funkcia násobenie, delenie, zvyšok *, /, % Tvorba toku riadenia (if/while/for/do/switch) declarations deklarácie lokálnych premenných sčı́tanie, odčı́tanie +, - if (vyraz ) prikazy bitový posun vľavo, vpravo <<, >> prikaz } porovnanie >, >=, <, <= else if (vyraz ) typ fnc(arg 1 ,. . . ) { definı́cia funkcie porovnanie ==, != prikaz declarations deklarácie lokálnych premenných bitové AND & else prikazy bitové XOR ^ prikaz return value; bitové OR | } logické AND && while (vyraz ) logické OR || prikaz /* */ komentár podmienený výraz vyraz 1 ? vyraz 2 : vyraz 3 for (vyraz 1 ; vyraz 2 ; vyraz 3 ) main(int argc, char *argv[]) main s argumentmi operátory priradenia +=, -=, *=, . . . prikaz Dátové Typy/Deklarácie oddeľovač výrazov , do Unárne operátory, podmienený výraz a operátory priradenie sa znak (1 byte) char združujú zprava do ľava; ostatné zľava doprava. prikaz celé čı́slo int while(vyraz ); pohyblivá rádová čiarka (malá presnosť) float Smernı́ky a polia switch (vyraz ) { pohyblivá rádová čiarka (dvojitá presnosť) double objekt, na ktorý ukazuje smernı́k pointer *pointer case const 1 : krátke (16 bit) čı́slo short adresa objektu meno &meno prikaz 1 dlhé (32 bit) čı́slo long deklarácia smernı́ka typ *meno break; kladné aj záporné signed pole meno[dim] case const 2 : iba kladné unsigned viacrozmerné pole meno[dim 1 ,. . . ] prikaz 2 smernı́k na int, float,. . . *int, *float,. . . beztypový smernı́k void * break; vymenovanie konštánt enum smernı́k do štruktúry pointer ->clen default: konštantná (nemenná) hodnota const Deklarácie smernı́kov prikaz deklarácia externej premennej extern smernı́k na typ typ *meno break; registrová premenná register funckia f vracajúca smernı́k na typ typ *f() } lokálna v jednom súbore static smernı́k pf na funkciu vracajúcu typ typ (*pf)() bez hodnoty void C Preprocesor štruktúra struct Štruktúry vložı́ knižničné súbory #include <filename> pomenovaný dátový typ typedef typ meno struct tag { predpis štruktúry vložı́ užı́vateľské súbory #include "filename" veľkosť objektu (typ je size_t) sizeof object declarations deklarácia členov nahradenie textu #define meno text veľkosť typu (typ je size_t) sizeof(typmeno) }; nahradenie makra #define meno(var ) text Konštanty vytvorenie štruktúry struct tag meno Prı́klad. #define max(A,B) ((A)>(B) ? (A) : (B)) sprı́stupnenie člena štruktúry meno.clen zrušenie definı́cie #undef meno long (prı́pona) L or l podmienený preklad #if, #else, #elif, #endif float (prı́pona) F or f člen štruktúry danej smernı́kom pointer -> clen Prı́klad. (*p).x a p->x značia to isté je meno definované, nedefinované? #ifdef, #ifndef vedecký tvar e meno definované? defined(meno) oktálne (prefix nula) 0 jedna hodnota, viac typov union bitové pole s b bitmi clen : b pokračovanie makra na viac riadkoch \ hexadecimálne (prefix nula-x) 0x or 0X znaková konštanta 'a' Initializácia Štandardné ANSI knižnice znaková konštanta (oktálne) '\ooo' <assert.h> <ctype.h> <errno.h> <float.h> <limits.h> znaková konštanta (hexadecimálne) '\xhh' premennej typ meno=value <locale.h> <math.h> <setjmp.h> <signal.h> <stdarg.h> newline, cr, tab, backspace \n, \r, \t, \b poľa typ meno[]={value 1 ,. . . } <stddef.h> <stdio.h> <stdlib.h> <string.h> <time.h> špeciálne znaky \\, \?, \', \" reťazca char meno[]="string" znaková konštanta (končı́ '\0') "abc. . . de" c 1998 Joseph H. Silverman July 1998 v1.0. Copyright ° Permission is granted to make and distribute copies of this card pro- vided the copyright notice and this permission notice are preserved on all copies. Send comments and corrections to J.H. Silverman, Math. Dept., Brown Univ., Providence, RI 02912 USA. hjhs@math.brown.edui C Reference Card (ANSI) Operácie s reťazcami <string.h> Limity Typov Celých Čı́sel <limits.h> s,t sú reťazce, cs,ct sú reťazcové konštanty CHAR_BIT 8 bitov v char Vstup/Výstup <stdio.h> džka s strlen(s) CHAR_MAX max. hodnota char kopı́ruj ct do s strcpy(s,ct) CHAR_MIN 0 max. hodnota char Štandardný Vstup/Výstup INT_MAX +2147483647 max. hodnota int až po n znakov strncpy(s,ct,n) štandardný vstupný súbor stdin INT_MIN -2147483647 min. hodnota int zlúč ct s s strcat(s,ct) štandardný výstupný súbor stdout LONG_MAX +2147483647 max. hodnota long až po n znakov strncat(s,ct,n) štandardný chybový súbor stderr LONG_MIN -2147483647 min. hodnota long porovnaj cs s ct strcmp(cs,ct) koniec súboru EOF SCHAR_MAX +127 max. hodnota char iba prvých n znakov strncmp(cs,ct,n) načı́taj znak getchar() SCHAR_MIN -127 min. hodnota char smernı́k ku prvému c v cs strchr(cs,c) vypı́š znak putchar(chr ) SHRT_MAX +32767 max. hodnota short int smernı́k k poslednému c v cs strrchr(cs,c) formátovaný výpis printf("format",arg 1 ,. . . ) SHRT_MIN -32767 min. hodnota short int kopı́ruj n znakov z ct do s memcpy(s,ct,n) vpı́š do reťazca s sprintf(s,"format",arg 1 ,. . . ) UCHAR_MAX 255 max. hodnota unsigned char kopı́ruj n znakov z ct do s memmove(s,ct,n) načı́taj formátované dáta scanf("format",&meno 1 ,. . . ) UINT_MAX 4294967295 max. hodnota unsigned int porovnaj n znakov z cs s ct memcmp(cs,ct,n) načı́taj z reťazca s sscanf(s,"format",&meno 1 ,. . . ) ULONG_MAX 4294967295 max. hodnota unsigned long smernı́k ku prvému c v prvých n znakoch memchr(cs,c,n) z cs riadok do reťazca s (< max znakov) gets(s,max) USHRT_MAX 65536 max. hodnota unsigned short vlož c do prvých n znakov z cs memset(s,c,n) vypı́š reťazec s puts(s) Vstup/Výstup do/zo súboru Štand. univerzálne funkcie <stdlib.h> Funkcie Času a Dátumu <time.h> deklarácia smernı́ka súboru FILE *fp absolútna hodnota z int n abs(n) procesorový čas použitý programom clock() otvorenie súboru fopen("meno","mode") absolútna hodnota z long n labs(n) Prı́klad. clock()/CLOCKS_PER_SEC je čas v sekundách módy: r (čı́tanie), w (zápis), a (doplnenie) podiel a zvyšok delenia int n,d div(n,d) aktuálny kalendárny čas time() načı́taj znak getc(fp) vracia štruktúru s div_t.quot a div_t.rem čas2 -čas1 v sekundách (double) difftime(time2 ,time1 ) zapı́š znak putc(chr ,fp) podiel a zvyšok delenia long n,d ldiv(n,d) typy na reprezentácie času clock_t,time_t zapı́š do súboru fprintf(fp,"format",arg 1 ,. . . ) vracia štruktúru s ldiv_t.quot and ldiv_t.rem typ štruktúry pre formát kalendárneho času tm čı́taj zo súboru fscanf(fp,"format",arg 1 ,. . . ) pseudo-náhodné celé čı́slo [0,RAND_MAX] rand() tm_sec sekundy po minúte uzavri súbor fclose(fp) nastav náhodné počiatočné čı́slo n srand(n) tm_min minúty po hodine nenulová hodnota, ak nastala chyba ferror(fp) ukonči vykonávanie programu exit(status) tm_hour hodiny od polnoci nenulová hodnota, ak nastal koniec súborufeof(fp) pošli reťazec s systému na vykonanie system(s) tm_mday deň v mesiaci načı́taj riadok do reťazca s (< max zankov)fgets(s,max,fp) Konverzie tm_mon mesiace od januára napı́š reťazecs fputs(s,fp) preveď reťazec s float/double atof(s) tm_year roky od 1900 Formáty pre Vstup/Výstup: "%-+ 0w.pc" preveď reťazec s int atoi(s) tm_wday dni od nedele - ľavé zarovnanie preveď reťazec s long atol(s) tm_yday dni od 1. januára + výpis so znamienkom preveď časť reťazca s na double strtod(s,endp) tm_isdst Indikácia letného času space vypı́š medzeru ak nie je znamienko 0 blok vedúcich núl preveď časť reťazca s (base b) na long strtol(s,endp,b) preveď lokálny čas na kalendárny čas mktime(tp) w minimálna šı́rka poľa rovnako, ale unsigned long strtoul(s,endp,b) preveď čas v tp na reťazec asctime(tp) p presnosť Alokácia Pamäte preveď kalendárny čas v tp na lokálny časctime(tp) c znak konverzie: alokuj pamäť calloc(nobj,size) preveď kalendárny čas na GMT gmtime(tp) d,i celé čı́slo u neznamienkové alokuj pamäť malloc(size) preveď kalendárny čas na lokálny čas localtime(tp) c jediný znak s reťazec znakov zmeň veľkosť objektu realloc(pts,size) formátuj info dátumu a času strftime(s,smax,"format",tp) f float/double e,E čı́slo s exponentom uvolnenie miesta free(ptr) tp je smernı́k na štruktúru typu tm o osmičkové čı́slo x,X šestnástkové čı́slo Funkcie Polı́ p smernı́k n počet napı́saných znakov hľadaj v poli heslo bsearch(key,array,n,size,cmp()) Limity Typu Float <float.h> g,G rovnaké ako f alebo e,E závisı́ od exponentu zoraď pole vzostupne qsort(array,n,size,cmp()) FLT_RADIX 2 základ exponentu FLT_ROUNDS zaokrúhľovacı́ mód rádovej čiarky Testovanie Druhu Znaku <ctype.h> Matematické funkcie <math.h> FLT_DIG 6 desatinné čı́slice presnosti argumenty a vrátené hodnoty sú typu double FLT_EPSILON 1E-5 najmenšie x tak 1.0 + x 6= 1.0 alfa-numerický? isalnum(c) trigonometricé funkcie sin(x), cos(x), tan(x) FLT_MANT_DIG počet čı́slic v mantise abecedný? isalpha(c) prevrátené trigonomické funkcie asin(x), acos(x), atan(x) FLT_MAX 1E+37 maximálne čı́slo s rádovou čiarkou kontrolný znak? iscntrl(c) arctan(y/x) atan2(y,x) FLT_MAX_EXP maximálny exponent desatinná čı́slica? isdigit(c) hyperbolické trigon. funkcie sinh(x), cosh(x), tanh(x) FLT_MIN 1E-37 minimálne čı́slo s rádovou čiarkou viditeľný znak? isgraph(c) exponenciály & logaritmy exp(x), log(x), log10(x) FLT_MIN_EXP minimálny exponent malé pı́smeno? islower(c) Prevod mantisa/exponent ldexp(x,n), frexp(x,*e) DBL_DIG 10 desatinné čı́slice presnosti viditeľný znak? isprint(c) delenie & zvyšok modf(x,*ip), fmod(x,y) DBL_EPSILON 1E-9 najmenšie x so 1.0 + x 6= 1.0 interpunkcia? ispunct(c) mocniny pow(x,y), sqrt(x) DBL_MANT_DIG počet čı́slic v mantise medzera, koniec riadku, tab...? isspace(c) zaokrúhlenie ceil(x), floor(x), fabs(x) DBL_MAX 1E+37 max double čı́slo s rádovou čiarkou veľké pı́smeno? isupper(c) DBL_MAX_EXP maximálny exponent šestnástková čı́slica? isxdigit(c) DBL_MIN 1E-37 min double čı́slo s rádovou čiarkou konvertuj na malé pı́smeno tolower(c) DBL_MIN_EXP minimálny exponent konvertuj na veľké pı́smeno toupper(c)