1 / 40

Standardní knihovní funkce pro vstup a výstup

Verze 2009.01. Standardní knihovní funkce pro vstup a výstup. 12. A1PRG - Programování – Seminář Ing. Michal Heczko heczko@fai.utb.cz. Agenda. Standardní vstup a výstup Formátovaný vstup a výstup Národní prostředí Dynamická alokace paměti. Standardní vstup a výstup.

pilis
Download Presentation

Standardní knihovní funkce pro vstup a výstup

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Verze 2009.01 Standardní knihovní funkce pro vstup a výstup 12 A1PRG - Programování – Seminář Ing. Michal Heczko heczko@fai.utb.cz

  2. Agenda • Standardní vstup a výstup • Formátovaný vstup a výstup • Národní prostředí • Dynamická alokace paměti

  3. Standardní vstup a výstup • Základní knihovní funkce: • gets() • puts() • getchar() • putchar()

  4. Standardní vstup a výstup • Funkce puts() • char * puts ( char * str ); • Vypíše řetězec na standardní výstup • Výpis textu proměnné až do nalezení ‘\0‘ . • Automaticky doplňuje znak ‘\n‘.

  5. Standardní vstup a výstup • Funkce puts() – příklad: #include <stdio.h> int main () { char string [] = "Hello world!"; puts (string); }

  6. Standardní vstup a výstup • Funkce gets() • char * gets ( char * str ); • Načte řetězec ze standardního vstupu a uloží do řetězcové proměnné. • Načítá celý řádek textu, vynechává znak ‘\n‘. • Automaticky doplňuje ‘\0‘ na konec řetězce.

  7. Standardní vstup a výstup • Funkce gets() – příklad: #include <stdio.h> int main() { char string [256]; printf ("Zadejte svou adresu: "); gets (string); printf (“Vaše adresa je: %s\n",string); return 0; }

  8. Standardní vstup a výstup • Funkce putchar() • char putchar ( char ch ); • Vypíše jednoho znaku na standardní výstup • Návratová hodnota: znak, který byl načten.

  9. Standardní vstup a výstup • Funkce putchar() – příklad: #include <stdio.h> int main () { char c; for (c = 'A' ; c <= 'Z' ; c++) { putchar(c); } return 0; }

  10. Standardní vstup a výstup • Funkce getchar() • int getchar (); • Načtení jednoho znaku ze standardního vstupu. • Návratová hodnota: znak, který byl zapsán.

  11. Standardní vstup a výstup • Funkce getchar() – příklad: #include <stdio.h> int main () { char c; puts ("Vepište text. Zápis ukončíte tečkou:"); do { c=getchar(); putchar (c); } while (c != '.'); return 0; }

  12. Formátovaný vstup a výstup • Výpis na terminál: • Obecný zápis: printf(řetězec, promenna) • Vstup z terminálu: • Obecný zápis: scanf(řetězec, &promenna)

  13. Formátovaný vstup a výstup • Řetězec obsahuje řídící sekvence, za které jsou dosazovány proměnné. • Řídící sekvence má následující obecnou syntaxi: %[příznaky][min_šířka][přesnost][modifikátor typu]typ

  14. Formátovaný vstup a výstup %[příznaky][min_šířka][přesnost][modifikátor typu]typ • Nepovinný parametr • Ovlivňuje zejména způsob zarovnání hodnoty při nastavení minimální šířky, zobrazení znaménka, … • Příznaky mají jednu z hodnot dle následující tabulky.

  15. Formátovaný vstup a výstup %[příznaky][min_šířka][přesnost][modifikátor typu]typ

  16. Formátovaný vstup a výstup %[příznaky][min_šířka][přesnost][modifikátor typu]typ • Nepovinný parametr. • Celočíselná hodnota. • Minimální šířka vypisovaného parametru. • Pokud je vypisovaná hodnota kratší, je doplněna zleva mezerami nebo dle příznaků. • Možno použít znak * - počet míst se načte z argumentu, který předchází proměnné k výpisu

  17. Formátovaný vstup a výstup %[příznaky][min_šířka][přesnost][modifikátor typu]typ • Nepovinný parametr. • Použití u racionálních čísel. • Počet cifer za desetinnou tečkou. • Uvádí se zápis včetně desetinné tečky. • Možno použít znak * - počet míst se načte z argumentu, který předchází proměnné k výpisu

  18. Formátovaný vstup a výstup %[příznaky][min_šířka][přesnost][modifikátor typu]typ • Povinný parametr. • Určuje formát vypisovaných dat, který odpovídá danému datovému typu. • Jednotlivé typy shrnuje následující tabulka.

  19. Formátovaný vstup a výstup %[příznaky][min_šířka][přesnost][modifikátor typu]typ

  20. Formátovaný vstup a výstup %[příznaky][min_šířka][přesnost][modifikátor typu]typ

  21. Formátovaný vstup a výstup %[příznaky][min_šířka][přesnost][modifikátor typu]typ • Nepovinný parametr. • Použití zejména u datových typů s větším/menším rozsahem než u základního datového typu. • Jednotlivé modifikátory typu shrnuje následující tabulka.

  22. Formátovaný vstup a výstup %[příznaky][min_šířka][přesnost][modifikátor typu]typ

  23. Formátovaný vstup a výstup • Příklady: • printf ("Znaky: %c %c \n", 'a', 65); • Znaky: a A • printf ("Desítková čísla: %d %ld\n", 1977, 650000); • Desítková čísla: 1977 650000 • printf ("Úvodní mezery: %10d \n", 1977); • Úvodní mezery: 1977 • printf ("Úvodní nuly: %010d \n", 1977); • Úvodní nuly: 0000001977

  24. Formátovaný vstup a výstup • Příklady: • printf ("Různé číselné soustavy: %d %x %o %#x %#o \n", 100, 100, 100, 100, 100); • Různé číselné soustavy: 100 64 144 0x64 0144 • printf ("Reálná čísla: %4.2f %+.0e %E \n", 3.1416, 3.1416, 3.1416); • Reálná čísla: 3.14 +3e+000 3.141600E+000

  25. Formátovaný vstup a výstup • Příklady: • printf ("Šířka: %*d \n", 5, 10); • Width trick: 10 • printf ("%s \n", "Řetězec"); • Řetězec

  26. Národní prostředí • Při návrhu jazyka C se nepočítalo s použitím jiného kódování, než je kódování pro znaky anglické abecedy. • Pro znaky národních abeced doplněna knihovna locale.h • Knihovna locale.h však nemá podporu ve všech překladačích! • Funguje však např. v MS Visual Studio nebo v Dev C++

  27. Národní prostředí • Nastavení pomocí funkce setlocale() char * setlocale ( intcategory, constchar * locale ); • Návratová hodnota: kategorie lokalizace

  28. Národní prostředí • Nastavení pomocí funkce setlocale() char * setlocale ( intcategory, constchar * locale ); • 1. parametr: kategorie lokalizace

  29. Národní prostředí • Nastavení pomocí funkce setlocale() char * setlocale ( intcategory, constchar * locale ); • 2. parametr: řetězec obsahující jméno lokalizace. • C – výchozí dle jazyka C • Prázdný řetězec – výchozí dle prostředí

  30. Národní prostředí • Příklad: #include <stdio.h> #include <conio.h> int main() { printf("Příliš žluťoučký kůň úpěl ďábelské ódy"); getch(); return 0; }

  31. Národní prostředí • Příklad: #include <stdio.h> #include <conio.h> #include <locale.h> int main() { setlocale(LC_ALL, ""); printf("Příliš žluťoučký kůň úpěl ďábelské ódy"); getch(); return 0; }

  32. Dynamická alokace paměti • Funkce z knihovny stdlib.h • Základní funkce: • malloc() • calloc() • realloc() • free()

  33. Dynamická alokace paměti • Funkce malloc() • Alokace paměti. Neprobíhá inicializace! • Funkce z knihovny stdlib.h • Syntaxe: • void * malloc ( size_t size );

  34. Dynamická alokace paměti • Funkce malloc() • Parametry: • size … velikost alokované paměti v bytech • Návratová hodnota: • void * … ukazatel na začátek alokované oblasti • Příklad: • int *x; • x = (int *) malloc(sizeof(int));

  35. Dynamická alokace paměti • Funkce calloc() • Alokace paměti. Probíhá inicializace na 0! • Funkce z knihovny stdlib.h • Syntaxe: • void * calloc ( size_t num, size_t size );

  36. Dynamická alokace paměti • Funkce calloc() • Parametry: • num … počet prvků • size … velikost jednoho prvku v bytech • Návratová hodnota: • void * … ukazatel na začátek alokované oblasti • Příklad: • int *x; • x = (int *) calloc(5, sizeof(int));

  37. Dynamická alokace paměti • Funkce realloc() • Realokace paměti – změna velikosti alokované oblasti. • Funkce z knihovny stdlib.h • Syntaxe: • void * realloc ( void * ptr, size_t size );

  38. Dynamická alokace paměti • Funkce realloc() • Parametry: • ptr … ukazatel na původní oblast • size … nová velikost v bytech • Návratová hodnota: • void * … ukazatel na začátek alokované oblasti • Příklad: • int *x; • x = (int *) malloc(5*sizeof(int)); • x = (int *) realloc(x, 10*sizeof(int));

  39. Dynamická alokace paměti • Funkce free() • Dealokace paměti – uvolnění paměti • Funkce z knihovny stdlib.h • Syntaxe: • void free ( void * ptr );

  40. A1PRG-s 12. Vstup a výstup Děkuji za pozornost Ing. Michal Heczko heczko@fai.utb.cz 218/U3 Prezentace k dispozici na http://vyuka.fai.utb.cz

More Related