Język C. Nowoczesne programowanie. Wydanie II - Helion
Tytuł oryginału: C Programming: A Modern Approach, 2nd Edition
Tłumaczenie: Przemysław Szeremiota
ISBN: 978-83-246-2805-6
stron: 936, Format: B5, okładka: miękka
Data wydania: 2011-02-03
Księgarnia: Helion
Cena książki: 129,00 zł
Język C żyje i ma się dobrze. Sprawdź, co nowego w wersji C99!
- Jak wygląda proces standaryzacji języka?
- Jak komentować kod?
- Jak przygotować projekt programu?
Język C należy do nielicznej grupy języków, które sprawdzają się w środowiskach produkcyjnych, a jednocześnie nadają się do nauki programowania na uczelniach wyższych. Dzięki logicznej i przejrzystej składni, jasno określonym zasadom wykorzystania oraz ogromnym możliwościom język ten pomimo swojego wieku cieszy się popularnością i uznaniem. Nawet dziś, kiedy na rynku panują niepodzielnie Java oraz .NET, język C znalazł swoją niszę i świetnie ją wypełnia. Na tym polu żaden współczesny język nie ma z nim żadnych szans!
Kolejne wydanie książki rozszerzono między innymi o elementy zawarte w specyfikacji oznaczonej numerem C99 (ISO 9899:1999). Co jeszcze wyróżnia tę książkę? Jej pierwsze wydanie było wykorzystywane na kursach programowania prowadzonych przez 225 uczelni. Dzięki temu zaliczana jest ona do najbardziej znaczących wydawnictw dotyczących języka C. Wydanie drugie powiela zalety pierwszego, a dodatkowo zostało rozbudowane o jeszcze większą liczbę przykładów, pytań, ćwiczeń i zadań programistycznych.
W trakcie pasjonującej lektury - zgadza się, K.N. King potrafi w ten sposób pisać o swoim ulubionym języku - poznasz wszystkie aspekty programowania w języku C, począwszy od jego historii, poprzez fundamentalne pojęcia funkcji, zmiennych, a skończywszy na zarządzaniu pamięcią oraz wykorzystaniu wskaźników. "Język C. Nowoczesne programowanie. Wydanie II" to obowiązkowa pozycja dla każdego studenta poznającego tajniki tego języka. Programiści znający język C niewątpliwie docenią kunszt autora, a książka znajdzie zastosowanie jako przekrojowy przewodnik - taka pozycja powinna być na półce każdego programisty!
- Historia języka C
- Proces standaryzacji języka
- Postać programu w C
- Dyrektywy preprocesora
- Komentowanie kodu
- Formatowanie wejścia-wyjścia
- Dostępne operatory arytmetyczne, przypisania, inkrementacji i dekrementacji
- Sterowanie przepływem programu
- Pętle
- Typy danych w języku C
- Tablice
- Konwersja typów
- Zastosowanie funkcji
- Rekurencja
- Działanie wskaźników
- Warunkowa kompilacja kodu
- Budowanie programu
- Przygotowanie projektu programu
- Programowanie niskopoziomowe
- Dostępne biblioteki standardowe
Poznaj język C, korzystając z uznanego podręcznika!
Osoby które kupowały "Język C. Nowoczesne programowanie. Wydanie II", wybierały także:
- Język C. Kurs video. Praktyczne wprowadzenie do programowania 98,98 zł, (39,59 zł -60%)
- Internet rzeczy. Podstawy programowania aplikacji i serwer 99,00 zł, (49,50 zł -50%)
- Nowoczesny C. Przegl 119,00 zł, (59,50 zł -50%)
- Efektywny C. Wprowadzenie do profesjonalnego programowania 69,00 zł, (34,50 zł -50%)
- Język C. Solidna wiedza w praktyce. Wydanie VIII 199,00 zł, (99,50 zł -50%)
Spis treści
Język C. Nowoczesne programowanie. Wydanie II -- spis treści
WSTĘP (19)
1. WPROWADZENIE (29)
- 1.1. Historia języka C (29)
- Początki (29)
- Standaryzacja (30)
- Języki oparte na C (31)
- 1.2. Mocne i słabsze strony języka C (32)
- Mocne strony (33)
- Słabości (33)
- Efektywne stosowanie języka C (34)
2. FUNDAMENTY JĘZYKA C (39)
- 2.1. Piszemy prosty program (39)
- Wyświetlamy cytat (40)
- Kompilacja i konsolidacja (40)
- Zintegrowane środowiska programistyczne (41)
- 2.2. Ogólna postać prostego programu w C (42)
- Dyrektywy preprocesora (43)
- Funkcje (43)
- Instrukcje (44)
- Wypisywanie ciągów znakowych (45)
- 2.3. Komentarze (46)
- 2.4. Zmienne i przypisania (48)
- Typy (48)
- Deklaracje (48)
- Przypisania (49)
- Wypisywanie wartości zmiennej (50)
- Obliczanie gabarytu przesyłki (51)
- Inicjalizacja (52)
- Wypisywanie wartości wyrażeń (53)
- 2.5. Wczytywanie danych (53)
- Obliczanie gabarytu przesyłki (podejście drugie) (54)
- 2.6. Definiowanie nazw dla stałych (55)
- Konwersja skali Fahrenheita na skalę Celsjusza (55)
- 2.7. Identyfikatory (57)
- Słowa kluczowe (58)
- 2.8. Ogólny układ programu C (58)
3. FORMATOWANIE WEJŚCIA-WYJŚCIA (69)
- 3.1. Funkcja printf (69)
- Specyfikatory konwersji (70)
- Wykorzystanie printf do formatowania liczb (72)
- Znaki sterujące (73)
- 3.2. Funkcja scanf (74)
- Działanie funkcji scanf (76)
- Zwykłe znaki w ciągu formatującym funkcji scanf (78)
- Skutki mylenia printf ze scanf (79)
- Dodawanie ułamków (79)
4. WYRAŻENIA (85)
- 4.1. Operatory arytmetyczne (86)
- Pierwszeństwo i łączność operatorów (87)
- Obliczanie cyfry kontrolnej kodu kreskowego (88)
- 4.2. Operatory przypisania (91)
- Przypisania proste (91)
- L-wartości (92)
- Przypisania złożone (93)
- 4.3. Operatory inkrementacji i dekrementacji (94)
- 4.4. Obliczanie wartości wyrażeń (96)
- Kolejność obliczania podwyrażeń (97)
- 4.5. Instrukcje wyrażeniowe (98)
5. INSTRUKCJE WYBORU (107)
- 5.1. Wyrażenia logiczne (108)
- Operatory relacji (108)
- Operatory porównań (109)
- Operatory logiczne (109)
- 5.2. Instrukcja if (111)
- Instrukcje blokowe (112)
- Klauzula else (112)
- Kaskadowe instrukcje if (114)
- Obliczanie prowizji brokera giełdowego (115)
- Problem "bezpańskiego" else (116)
- Wyrażenia warunkowe (117)
- Wartości boolowskie w C89 (118)
- Wartości boolowskie w C99 (120)
- 5.3. Instrukcja switch (120)
- Rola instrukcji break (123)
- Wypisywanie daty w zapisie urzędowym (124)
6. INSTRUKCJE PĘTLI (133)
- 6.1. Instrukcja while (134)
- Pętle nieskończone (135)
- Wypisywanie tabeli kwadratów liczb (136)
- Obliczanie sumy szeregu liczb (137)
- 6.2. Instrukcja do (137)
- Obliczanie liczby cyfr w liczbie całkowitej (138)
- 6.3. Instrukcja for (139)
- Idiomy instrukcji for (141)
- Pomijanie wyrażeń w instrukcji for (142)
- Instrukcje for w C99 (143)
- Operator przecinka (143)
- Wypisywanie tabeli kwadratów liczb (podejście drugie) (144)
- 6.4. Przerywanie pętli (146)
- Instrukcja break (146)
- Instrukcja continue (147)
- Instrukcja goto (148)
- Saldo konta (149)
- 6.5. Instrukcja pusta (151)
7. PODSTAWOWE TYPY C (161)
- 7.1. Typy całkowite (161)
- Typy całkowite w C99 (164)
- Literały całkowite (164)
- Literały całkowite w C99 (166)
- Przepełnienie zakresu (166)
- Wczytywanie i wypisywanie wartości całkowitych (166)
- Sumowanie szeregu liczb całkowitych (podejście drugie) (167)
- 7.2. Typy zmiennoprzecinkowe (168)
- Literały zmiennoprzecinkowe (170)
- Wczytywanie i wypisywanie wartości zmiennoprzecinkowych (170)
- 7.3. Typy znakowe (171)
- Operacje na znakach (172)
- Znaki ze znakiem i bez znaku (173)
- Typy arytmetyczne (173)
- Znaki sterujące (174)
- Funkcje do manipulowania znakami (176)
- Wczytywanie i wypisywanie znaków funkcjami scanf i printf (176)
- Wczytywanie i wypisywanie znaków funkcjami getchar i putchar (177)
- Określanie długości komunikatu (179)
- 7.4. Konwersja typów (180)
- Zwyczajne konwersje arytmetyczne (181)
- Konwersja przy przypisaniu (183)
- Niejawne konwersje w C99 (184)
- Rzutowanie (185)
- 7.5. Definicje typów (186)
- Zalety definicji typów (187)
- Definicje typów a przenośność programów (188)
- 7.6. Operator sizeof (189)
8. TABLICE (199)
- 8.1. Tablice jednowymiarowe (199)
- Indeksowanie tablic (200)
- Odwracanie szeregu liczbowego (202)
- Inicjalizacja tablicy (203)
- Inicjalizatory desygnowane (203)
- Sprawdzanie, czy liczba zawiera powtarzające się cyfry (204)
- Operator sizeof dla tablic (205)
- Naliczanie odsetek (206)
- 8.2. Tablice wielowymiarowe (208)
- Inicjalizowanie tablic wielowymiarowych (209)
- Stałe tablicowe (210)
- Rozdawanie kart (211)
- 8.3. Tablice o zmiennej liczbie elementów (C99) (212)
9. FUNKCJE (223)
- 9.1. Definiowanie i wywoływanie funkcji (223)
- Obliczanie średnich (224)
- Odliczanie (225)
- Wyświetlanie napisu (kolejne podejście) (226)
- Definicja funkcji (227)
- Wywołanie funkcji (229)
- Sprawdzanie, czy podana liczba jest liczbą pierwszą (230)
- 9.2. Deklaracja funkcji (231)
- 9.3. Argumenty (233)
- Konwersje argumentów (234)
- Argumenty tablicowe (235)
- Parametry tablicowe o zmiennym rozmiarze (238)
- Deklaracje parametrów tablicowych ze słowem static (240)
- Literały tablicowe (241)
- 9.4. Instrukcja return (242)
- 9.5. Zakończenie programu (243)
- Funkcja exit (243)
- 9.6. Rekurencja (244)
- Algorytm quicksort (246)
- quicksort (248)
10. ORGANIZACJA PROGRAMU (261)
- 10.1. Zmienne lokalne (261)
- Zmienne statyczne funkcji (262)
- Parametry (263)
- 10.2. Zmienne zewnętrzne (263)
- Przykład. Stos implementowany na zmiennych zewnętrznych (263)
- Zalety i wady zmiennych zewnętrznych (264)
- Zgadywanka liczbowa (266)
- 10.3. Bloki (270)
- 10.4. Zasięg zmiennych (271)
- 10.5. Organizacja programu w C (272)
- Siła rozdania pokerowego (273)
11. WSKAŹNIKI (283)
- 11.1. Zmienne wskaźnikowe (283)
- Deklarowanie zmiennych wskaźnikowych (284)
- 11.2. Operator adresu i wyłuskania (285)
- Operator adresu (285)
- Operator wyłuskania (286)
- 11.3. Przypisania a wskaźniki (287)
- 11.4. Wskaźniki jako argumenty funkcji (289)
- Wyszukiwanie największego i najmniejszego elementu tablicy (291)
- Ochrona argumentów za pomocą const (293)
- 11.5. Wskaźniki jako wartości zwracane (293)
12. WSKAŹNIKI A TABLICE (301)
- 12.1. Arytmetyka wskaźników (302)
- Dodawanie liczby do wskaźnika (303)
- Odejmowanie liczby od wskaźnika (303)
- Odejmowanie wskaźnika od wskaźnika (304)
- Porównywanie wskaźników (304)
- Wskaźniki do literałów tablicowych (304)
- 12.2. Przetwarzanie tablic na bazie wskaźników (305)
- Łączenie operatorów * i ++ (306)
- 12.3. Nazwa tablicy jako wskaźnik (307)
- Odwracanie szeregu liczbowego (308)
- Argumenty tablicowe (ponownie) (309)
- Wskaźnik jako nazwa tablicy (311)
- 12.4. Wskaźniki a tablice wielowymiarowe (311)
- Przetwarzanie elementów tablicy wielowymiarowej (311)
- Przetwarzanie wierszy tablicy wielowymiarowej (312)
- Przetwarzanie kolumn tablicy wielowymiarowej (313)
- Nazwa tablicy wielowymiarowej jako wskaźnik (314)
- 12.5. Wskaźniki a tablice o zmiennym rozmiarze (C99) (314)
13. CIĄGI ZNAKÓW (323)
- 13.1. Literały napisowe (323)
- Znaki sterujące w literałach napisowych (324)
- Kontynuacja literału napisowego w nowym wierszu (324)
- Literały napisowe a pamięć programu (325)
- Operacje na literałach napisowych (326)
- Literały napisowe a literały znakowe (326)
- 13.2. Zmienne napisowe (327)
- Inicjalizowanie zmiennej napisowej (328)
- Tablice znaków a wskaźniki do znaków (329)
- 13.3. Wczytywanie i wypisywanie napisów (330)
- Wypisywanie napisów funkcjami printf i puts (330)
- Wczytywanie ciągów znaków funkcjami scanf i gets (331)
- Wczytywanie napisów znak po znaku (333)
- 13.4. Odwołania do pojedynczych znaków w ciągu (334)
- 13.5. Funkcje biblioteczne języka C (335)
- Funkcja strcpy (kopiowanie ciągów) (336)
- Funkcja strlen (długość ciągu) (338)
- Funkcja strcat (łączenie ciągów) (338)
- Funkcja strcmp (porównywanie ciągów) (339)
- Wypisywanie notatek kalendarzowych (340)
- 13.6. Idiomy (343)
- Szukanie końca ciągu (343)
- Kopiowanie ciągu (345)
- 13.7. Tablice ciągów znaków (347)
- Argumenty wywołania programu (349)
- Weryfikacja nazw planet (351)
14. PREPROCESOR (363)
- 14.1. Jak działa preprocesor (363)
- 14.2. Dyrektywy preprocesora (366)
- 14.3. Makrodefinicje (367)
- Makrodefinicje proste (367)
- Makrodefinicje sparametryzowane (370)
- Operator # (373)
- Operator ## (374)
- Ogólne właściwości makrodefinicji (375)
- Nawiasy w makrodefinicjach (376)
- Tworzenie długich makrodefinicji (377)
- Makrodefinicje predefiniowane (379)
- Dodatkowe makrodefinicje predefiniowane w C99 (380)
- Puste argumenty makrodefinicji (381)
- Makrodefinicje o zmiennej liczbie argumentów (382)
- Identyfikator __func__ (383)
- 14.4. Warunkowa kompilacja kodu (384)
- Dyrektywy #if i #endif (384)
- Operator defined (385)
- Dyrektywy #ifdef i #ifndef (386)
- Dyrektywy #elif i #else (386)
- Zastosowania warunkowej kompilacji kodu (387)
- 14.5. Inne dyrektywy (388)
- Dyrektywa #error (389)
- Dyrektywa #line (390)
- Dyrektywa #pragma (391)
- Operator _Pragma (391)
15. DUŻE PROGRAMY (401)
- 15.1. Pliki źródłowe (401)
- 15.2. Pliki nagłówkowe (403)
- Dyrektywa #include (403)
- Wspólne makrodefinicje i synonimy typów (405)
- Wspólne prototypy funkcji (406)
- Wspólne deklaracje zmiennych (407)
- Zagnieżdżone dyrektywy #include (409)
- Ochrona plików nagłówkowych (410)
- Dyrektywy #error w plikach nagłówkowych (411)
- 15.3. Podział programu na pliki (411)
- Formatowanie tekstu (412)
- 15.4. Budowanie programu z wielu plików (419)
- Pliki Makefile (419)
- Błędy konsolidowania programu (422)
- Przebudowa programu (422)
- Definiowanie makrodefinicji na zewnątrz programu (425)
16. STRUKTURY, UNIE I WYLICZENIA (431)
- 16.1. Zmienne strukturalne (431)
- Deklarowanie zmiennych strukturalnych (432)
- Inicjalizowanie zmiennych strukturowych (433)
- Inicjalizatory desygnowane (434)
- Operacje na strukturach (435)
- 16.2. Typy strukturowe (436)
- Deklarowanie znacznika struktury (437)
- Definiowanie typu strukturowego (438)
- Struktury jako argumenty i wartości zwracane funkcji (439)
- Literały strukturowe (440)
- 16.3. Tablice i struktury zagnieżdżone (441)
- Struktury struktur (441)
- Tablice struktur (442)
- Inicjalizowanie tablic struktur (443)
- Zarządzanie bazą danych magazynu (444)
- 16.4. Unie (450)
- Unie dla oszczędności (452)
- Unie jako mieszane struktury danych (454)
- Pole "wyróżnika" w unii (455)
- 16.5. Wyliczenia (456)
- Znaczniki i typy wyliczeniowe (457)
- Wyliczenia jako liczby całkowite (458)
- Wyliczenia jako wyróżniki unii (459)
17. ZAAWANSOWANE ZASTOSOWANIA WSKAŹNIKÓW (469)
- 17.1. Dynamiczny przydział pamięci (470)
- Funkcje przydziału pamięci (470)
- Wskaźniki puste (471)
- 17.2. Dynamiczny przydział ciągów znaków (472)
- Przydział pamięci dla ciągu znaków za pomocą funkcji malloc (472)
- Przydziały dynamiczne w funkcjach operujących na ciągach znaków (473)
- Tablice ciągów przydzielanych dynamicznie (474)
- Wypisywanie notatek kalendarzowych (podejście drugie) (475)
- 17.3. Tablice przydzielane dynamicznie (476)
- Przydział pamięci dla ciągu znaków za pomocą funkcji malloc (477)
- Funkcja calloc (478)
- Funkcja realloc (478)
- 17.4. Zwalnianie pamięci (479)
- Funkcja free (480)
- Problem "wiszących" wskaźników (481)
- 17.5. Listy elementów (481)
- Deklarowanie typu węzła (482)
- Tworzenie węzła listy (483)
- Operator -> (484)
- Wstawianie węzła na początek listy (484)
- Przeszukiwanie listy (487)
- Usuwanie węzła z listy (488)
- Listy uporządkowane (490)
- Zarządzanie bazą danych magazynu (drugie podejście) (491)
- 17.6. Wskaźniki do wskaźników (496)
- 17.7. Wskaźniki do funkcji (497)
- Wskaźniki do funkcji w roli argumentów (497)
- Funkcja qsort (498)
- Inne zastosowania wskaźników do funkcji (501)
- Tablice funkcji trygonometrycznych (502)
- 17.8. Wskaźniki zastrzeżone (C99) (503)
- 17.9. Elastyczne składowe tablicowe (C99) (505)
18. DEKLARACJE (517)
- 18.1. Składnia deklaracji (517)
- 18.2. Klasy przydziału (519)
- Własności zmiennych (519)
- Klasa przydziału auto (520)
- Klasa przydziału static (521)
- Klasa przydziału extern (522)
- Klasa przydziału register (523)
- Klasa przydziału funkcji (524)
- Podsumowanie (525)
- 18.3. Kwalifikatory typów (526)
- 18.4. Deklaratory (528)
- Rozszyfrowywanie zawiłych deklaracji (529)
- Stosowanie synonimów typów dla uproszczenia deklaracji (531)
- 18.5. Inicjalizatory (531)
- Zmienne niezainicjalizowane (533)
- 18.6. Funkcje inline (C99) (533)
- Definicje rozwijane w miejscu wywołania (534)
- Ograniczenia funkcji rozwijanych w miejscu wywołania (536)
- Funkcje inline w GCC (536)
19. PROJEKT PROGRAMU (545)
- 19.1. Moduły (546)
- Spójność i współzależność (548)
- Rodzaje modułów (548)
- 19.2. Ukrywanie informacji (549)
- Moduł obsługi stosu (550)
- 19.3. Abstrakcyjne typy danych (553)
- Hermetyzacja (554)
- Typy niepełne (554)
- 19.4. Stos jako abstrakcyjny typ danych (ADT) (555)
- Definiowanie interfejsu stosu w wersji ADT (555)
- Implementacja stosu w wersji ADT (na bazie tablicy) (557)
- Zmiana typu elementu w stosie w wersji ADT (559)
- Implementowanie stosu ADT (na bazie tablicy dynamicznej) (560)
- Implementowanie stosu ADT (na bazie listy) (562)
- 19.5. Problemy projektowe przy ADT (564)
- Nomenklatura (564)
- Obsługa błędów (565)
- Uniwersalny typ ADT (565)
- ADT w nowszych językach programowania (566)
20. PROGRAMOWANIE NISKOPOZIOMOWE (571)
- 20.1. Operatory bitowe (571)
- Operatory przesunięć bitowych (572)
- Negacja, iloczyn, suma i suma wyłączająca (573)
- Operatory bitowe w odwołaniach do poszczególnych bitów wartości liczbowych (574)
- Operatory bitowe w odwołaniach do pól bitowych (576)
- Szyfrowanie XOR (577)
- 20.2. Pola bitowe w strukturach (578)
- Reprezentacja pól bitowych (580)
- 20.3. Inne niskopoziomowe techniki programistyczne (581)
- Definiowanie typów maszynowych (581)
- Unie jako perspektywy (582)
- Wskaźniki jako adresy (584)
- Podgląd pamięci (584)
- Kwalifikator typu volatile (586)
21. BIBLIOTEKA STANDARDOWA (593)
- 21.1. Stosowanie biblioteki standardowej (593)
- Nazewnictwo w bibliotece standardowej (594)
- Funkcje ukrywane przez makrodefinicje (595)
- 21.2. Przegląd biblioteki standardowej C89 (596)
- Diagnostyka (596)
- Obsługa znaków (596)
- Błędy (596)
- Cechy typów zmiennoprzecinkowych (596)
- Rozmiary typów całkowitoliczbowych (596)
- Lokalizacja programów (597)
- Matematyka (597)
- Skoki nielokalne (597)
- Obsługa sygnałów (597)
- Zmienne listy argumentów (597)
- Podstawowe definicje (597)
- Wejście-wyjście (597)
- Narzędzia (598)
- Obsługa ciągów znaków (598)
- Daty i godziny (598)
- 21.3. Uzupełnienia i zmiany w C99 (598)
- Arytmetyka liczb zespolonych (599)
- Środowisko implementacji zmiennoprzecinkowej (599)
- Znakowe konwersje typów całkowitoliczbowych (599)
- Alternatywny zapis składni C (599)
- Wartości i typy logiczne (599)
- Typy całkowitoliczbowe (599)
- Matematyka na uniwersalnych typach (599)
- Operacje na znakach wielobajtowych (600)
- Narzędzia mapowania i klasyfikacji znaków wielobajtowych (600)
- 21.4. Nagłówek <stddef.h> - definicje podstawowe (600)
- 21.5. Nagłówek <stdbool.h> (C99) - typy i wartości logiczne (601)
22. WEJŚCIE-WYJŚCIE (605)
- 22.1. Strumienie (606)
- Wskaźniki plikowe (606)
- Strumienie standardowe a przekierowania (607)
- Pliki tekstowe i pliki binarne (608)
- 22.2. Operacje na plikach (609)
- Otwieranie pliku (610)
- Tryby dostępu do plików (611)
- Zamykanie pliku (612)
- Dołączanie pliku do otwartego strumienia (613)
- Pobieranie nazw plików z wiersza polecenia (613)
- Sprawdzanie możliwości otwarcia pliku (614)
- Pliki tymczasowe (615)
- Buforowanie plików (616)
- Inne operacje na plikach (618)
- 22.3. Formatowanie wejścia-wyjścia (619)
- Funkcje ...printf (619)
- Specyfikatory konwersji dla funkcji ...printf (620)
- Zmiany specyfikatorów konwersji w C99 (622)
- Przykłady specyfikacji konwersji dla funkcji ...printf (624)
- Funkcje ...scanf (626)
- Ciągi formatujące funkcji ...scanf (627)
- Specyfikacje konwersji funkcji ...scanf (628)
- Zmiany specyfikatorów konwersji w C99 (631)
- Przykłady dla funkcji scanf (631)
- Wykrywanie końca strumienia wejściowego i błędów (632)
- 22.4. Wejście-wyjście znakowe (635)
- Funkcje wyjścia (635)
- Funkcje wejścia (636)
- Kopiowanie pliku (637)
- 22.5. Wierszowe wejście-wyjście (638)
- Funkcje wyjścia (638)
- Funkcje wejścia (639)
- 22.6. Blokowe wejście-wyjście (640)
- 22.7. Pozycjonowanie w plikach (641)
- Modyfikowanie pliku rekordów bazy danych (643)
- 22.8. Funkcje wejścia-wyjścia w pamięci (644)
- Funkcje wyjścia (645)
- Funkcje wejścia (646)
23. OBSŁUGA LICZB I DANYCH ZNAKOWYCH (659)
- 23.1. Nagłówek <float.h> - cechy typów zmiennoprzecinkowych (659)
- 23.2. Nagłówek <limits.h> - rozmiary typów całkowitych (662)
- 23.3. Nagłówek <math.h> - matematyka (664)
- Błędy (664)
- Funkcje trygonometryczne (665)
- Funkcje hiperboliczne (666)
- Funkcje wykładnicze i logarytmiczne (666)
- Funkcje potęgowe (667)
- Najbliższa liczba całkowita, wartość bezwzględna, reszta z dzielenia (668)
- 23.4. Nagłówek <math.h> - matematyka (C99) (669)
- Standard zmiennoprzecinkowy IEEE (669)
- Typy (671)
- Makrodefinicje (671)
- Błędy (672)
- Funkcje (673)
- Makrodefinicje klasyfikujące (674)
- Funkcje trygonometryczne (675)
- Funkcje hiperboliczne (675)
- Funkcje wykładnicze i logarytmiczne (676)
- Funkcje potęgowe i funkcje wartości bezwzględnej (677)
- Funkcje błędów i funkcje gamma (678)
- Funkcje zaokrąglania (679)
- Funkcje reszty z dzielenia (680)
- Funkcja manipulacji (680)
- Funkcje maksimum, minimum i różnicy dodatniej (681)
- Zmiennoprzecinkowy iloczyn-suma (682)
- Makrodefinicje porównań (683)
- 23.5. Nagłówek <ctype.h> - obsługa znaków (684)
- Funkcje klasyfikacji znaków (684)
- Test funkcji klasyfikacji znaków (685)
- Funkcje mapowania wielkości liter (686)
- Test funkcji zmiany wielkości liter (687)
- 23.6. Nagłówek <string.h> - obsługa ciągów znaków (687)
- Funkcje kopiujące (688)
- Funkcje łączenia ciągów (689)
- Funkcje porównań (690)
- Funkcje wyszukujące (691)
- Różne (695)
24. OBSŁUGA BŁĘDÓW (699)
- 24.1. Nagłówek <assert.h> - diagnostyka (700)
- 24.2. Nagłówek <errno.h> - błędy (701)
- Funkcje perror i strerror (702)
- 24.3. Nagłówek <signal.h> - obsługa sygnałów (703)
- Makrodefinicje sygnałów (704)
- Funkcja signal (704)
- Predefiniowane funkcje obsługi sygnałów (705)
- Funkcja raise (707)
- Testowanie mechanizmu sygnałów (707)
- 24.4. Nagłówek <setjmp.h> - skoki nielokalne (708)
- Testowanie setjmp/longjmp (709)
25. "MIĘDZYNARODÓWKA" (715)
- 25.1. Nagłówek <locale.h> - środowiska językowe (716)
- Kategorie (716)
- Funkcja setlocale (717)
- Funkcja localeconv (719)
- 25.2. Znaki wielobajtowe i znaki poszerzone (722)
- Znaki wielobajtowe (723)
- Znaki poszerzone (724)
- Unicode i uniwersalny zestaw znaków UCS (724)
- Kodowanie Unicode (725)
- Funkcje konwersji znaków poszerzonych i wielobajtowych (727)
- Funkcje konwersji ciągów znaków poszerzonych i wielobajtowych (729)
- 25.3. Dwuznaki i trójznaki (729)
- Trójznaki (730)
- Dwuznaki (731)
- Nagłówek <iso646.h> - symbole alternatywne (731)
- 25.4. Uniwersalne nazwy znaków (C99) (732)
- 25.5. Nagłówek <wchar.h> (C99) - dodatkowe narzędzia dla znaków poszerzonych i wielobajtowych (733)
- Orientacja strumienia (734)
- Funkcje formatowanego wejścia-wyjścia dla znaków poszerzonych (735)
- Funkcje wejścia-wyjścia dla znaków poszerzonych (737)
- Obsługa ciągów znaków poszerzonych (738)
- Funkcja konwersji dat i godzin na ciągi znaków poszerzonych (743)
- Dodatkowe funkcje konwersji znaków poszerzonych i wielobajtowych (743)
- 25.6. Nagłówek <wctype.h> (C99) - klasyfikacja znaków poszerzonych (747)
- Funkcje klasyfikacji znaków poszerzonych (747)
- Rozszerzalne funkcje klasyfikacji znaków poszerzonych (748)
- Funkcje zmiany wielkości liter dla znaków poszerzonych (749)
- Rozszerzalne funkcje zmiany wielkości liter znaków poszerzonych (750)
26. RÓŻNE (755)
- 26.1. Nagłówek <stdarg.h> - zmienna liczba argumentów (755)
- Wywołanie funkcji o zmiennej liczbie argumentów (758)
- Funkcje v...printf (758)
- Funkcje v...scanf (759)
- 26.2. Nagłówek <stdlib.h> - inne narzędzia (760)
- Funkcje konwersji liczbowych (761)
- Testowanie funkcji konwersji liczbowych (762)
- Funkcje sekwencji pseudolosowych (764)
- Testowanie funkcji generowania liczb pseudolosowych (765)
- Komunikacja ze środowiskiem wykonawczym (766)
- Wyszukiwanie i sortowanie (768)
- Określanie odległości (769)
- Funkcje arytmetyki liczb całkowitych (770)
- 26.3. Nagłówek <time.h> - daty i godziny (771)
- Funkcje operujące na datach i godzinach (772)
- Funkcje konwersji dat i godzin (774)
- Wypisywanie daty i godziny (778)
27. ROZSZERZONE OPERACJE MATEMATYCZNE W C99 (787)
- 27.1. Nagłówek <stdint.h> - typy całkowite (788)
- Typy nagłówka <stdint.h> (788)
- Ograniczenia typów o określonym rozmiarze (790)
- Ograniczenia pozostałych typów całkowitych (790)
- Makrodefinicje dla stałych całkowitych (791)
- 27.2. Nagłówek <inttypes.h> - konwersje typów całkowitych (792)
- Makrodefinicje dla specyfikatorów konwersji (792)
- Funkcje obsługi najszerszych typów (793)
- 27.3. Liczby zespolone (C99) (795)
- Definicja liczb zespolonych (795)
- Arytmetyka liczb zespolonych (797)
- Typy zespolone w C99 (797)
- Operacje na wartościach zespolonych (798)
- Reguły konwersji dla typów zespolonych (798)
- 27.4. Nagłówek <complex.h> (C99) - arytmetyka liczb zespolonych (800)
- Makrodefinicje nagłówka <complex.h> (800)
- CX_LIMITED_RANGE (801)
- Funkcje nagłówka <complex.h> (802)
- Funkcje trygonometryczne (802)
- Funkcje hiperboliczne (803)
- Funkcje wykładnicze i logarytmiczne (804)
- Funkcje potęgowe i funkcje wartości bezwzględnych (804)
- Inne (805)
- Szukanie pierwiastków równania kwadratowego (805)
- 27.5. Nagłówek <tgmath.h> (C99) - matematyka bez typów (806)
- Makrodefinicje rozprowadzające wywołania funkcji matematycznych (807)
- Wywołania makrodefinicji rozprowadzających (807)
- 27.6. Nagłówek <fenv.h> (C99) - środowisko zmiennoprzecinkowe (810)
- Stany i tryby jednostki zmiennoprzecinkowej (810)
- Makrodefinicje nagłówka <fenv.h> (811)
- FENV_ACCESS (811)
- Funkcje wyjątków zmiennoprzecinkowych (813)
- Funkcje zaokrąglania (814)
- Funkcje środowiska (815)
DODATEK A: OPERATORY JĘZYKA C (819)
DODATEK B: C99 KONTRA C89 (821)
DODATEK C: C89 KONTRA K&R (827)
DODATEK D: FUNKCJE BIBLIOTEKI STANDARDOWEJ (831)
DODATEK E: ZESTAW ZNAKÓW ASCII (893)
BIBLIOGRAFIA (895)
SKOROWIDZ (899)