|  | Copyright |
|  | Preface |
|
|  | How This Book Is Organized |
|
|  | Further Reading |
|
|  | Conventions Used in This Book |
|
|  | Using Code Examples |
|
|  | Safari® Enabled |
|
|  | Your Questions and Comments |
|
|  | Acknowledgments |
|  |
Part I:
Language |
|
|  |
Chapter 1.
Language Basics |
|
|  |
Section 1.1.
Characteristics of C |
|
|  |
Section 1.2.
The Structure of C Programs |
|
|  |
Section 1.3.
Source Files |
|
|  |
Section 1.4.
Comments |
|
|  |
Section 1.5.
Character Sets |
|
|  |
Section 1.6.
Identifiers |
|
|  |
Section 1.7.
How the C Compiler Works |
|
|  |
Chapter 2.
Types |
|
|  |
Section 2.1.
Typology |
|
|  |
Section 2.2.
Integer Types |
|
|  |
Section 2.3.
Floating-Point Types |
|
|  |
Section 2.4.
Complex Floating-Point Types (C99) |
|
|  |
Section 2.5.
Enumerated Types |
|
|  |
Section 2.6.
The Type void |
|
|  |
Chapter 3.
Literals |
|
|  |
Section 3.1.
Integer Constants |
|
|  |
Section 3.2.
Floating-Point Constants |
|
|  |
Section 3.3.
Character Constants |
|
|  |
Section 3.4.
String Literals |
|
|  |
Chapter 4.
Type Conversions |
|
|  |
Section 4.1.
Conversion of Arithmetic Types |
|
|  |
Section 4.2.
Conversion of Nonarithmetic Types |
|
|  |
Chapter 5.
Expressions and Operators |
|
|  |
Section 5.1.
How Expressions Are Evaluated |
|
|  |
Section 5.2.
Operators in Detail |
|
|  |
Section 5.3.
Constant Expressions |
|
|  |
Chapter 6.
Statements |
|
|  |
Section 6.1.
Expression Statements |
|
|  |
Section 6.2.
Block Statements |
|
|  |
Section 6.3.
Loops |
|
|  |
Section 6.4.
Selection Statements |
|
|  |
Section 6.5.
Unconditional Jumps |
|
|  |
Chapter 7.
Functions |
|
|  |
Section 7.1.
Function Definitions |
|
|  |
Section 7.2.
Function Declarations |
|
|  |
Section 7.3.
How Functions Are Executed |
|
|  |
Section 7.4.
Pointers as Arguments and Return Values |
|
|  |
Section 7.5.
Inline Functions |
|
|  |
Section 7.6.
Recursive Functions |
|
|  |
Section 7.7.
Variable Numbers of Arguments |
|
|  |
Chapter 8.
Arrays |
|
|  |
Section 8.1.
Defining Arrays |
|
|  |
Section 8.2.
Accessing Array Elements |
|
|  |
Section 8.3.
Initializing Arrays |
|
|  |
Section 8.4.
Strings |
|
|  |
Section 8.5.
Multidimensional Arrays |
|
|  |
Section 8.6.
Arrays as Arguments of Functions |
|
|  |
Chapter 9.
Pointers |
|
|  |
Section 9.1.
Declaring Pointers |
|
|  |
Section 9.2.
Operations with Pointers |
|
|  |
Section 9.3.
Pointers and Type Qualifiers |
|
|  |
Section 9.4.
Pointers to Arrays and Arrays of Pointers |
|
|  |
Section 9.5.
Pointers to Functions |
|
|  |
Chapter 10.
Structures and Unions and Bit-Fields |
|
|  |
Section 10.1.
Structures |
|
|  |
Section 10.2.
Unions |
|
|  |
Section 10.3.
Bit-Fields |
|
|  |
Chapter 11.
Declarations |
|
|  |
Section 11.1.
General Syntax |
|
|  |
Section 11.2.
Type Names |
|
|  |
Section 11.3.
typedef Declarations |
|
|  |
Section 11.4.
Linkage of Identifiers |
|
|  |
Section 11.5.
Storage Duration of Objects |
|
|  |
Section 11.6.
Initialization |
|
|  |
Chapter 12.
Dynamic Memory Management |
|
|  |
Section 12.1.
Allocating Memory Dynamically |
|
|  |
Section 12.2.
Characteristics of Allocated Memory |
|
|  |
Section 12.3.
Resizing and Releasing Memory |
|
|  |
Section 12.4.
An All-Purpose Binary Tree |
|
|  |
Section 12.5.
Characteristics |
|
|  |
Section 12.6.
Implementation |
|
|  |
Chapter 13.
Input and Output |
|
|  |
Section 13.1.
Streams |
|
|  |
Section 13.2.
Files |
|
|  |
Section 13.3.
Opening and Closing Files |
|
|  |
Section 13.4.
Reading and Writing |
|
|  |
Section 13.5.
Random File Access |
|
|  |
Chapter 14.
Preprocessing Directives |
|
|  |
Section 14.1.
Inserting the Contents of Header Files |
|
|  |
Section 14.2.
Defining and Using Macros |
|
|  |
Section 14.3.
Conditional Compiling |
|
|  |
Section 14.4.
Defining Line Numbers |
|
|  |
Section 14.5.
Generating Error Messages |
|
|  |
Section 14.6.
The #pragma Directive |
|
|  |
Section 14.7.
The _Pragma Operator |
|
|  |
Section 14.8.
Predefined Macros |
|  |
Part II:
Standard Library |
|
|  |
Chapter 15.
The Standard Headers |
|
|  |
Section 15.1.
Using the Standard Headers |
|
|  |
Section 15.2.
Contents of the Standard Headers |
|
|  |
Chapter 16.
Functions at a Glance |
|
|  |
Section 16.1.
Input and Output |
|
|  |
Section 16.2.
Mathematical Functions |
|
|  |
Section 16.3.
Character Classification and Conversion |
|
|  |
Section 16.4.
String Processing |
|
|  |
Section 16.5.
Multibyte Characters |
|
|  |
Section 16.6.
Converting Between Numbers and Strings |
|
|  |
Section 16.7.
Searching and Sorting |
|
|  |
Section 16.8.
Memory Block Handling |
|
|  |
Section 16.9.
Dynamic Memory Management |
|
|  |
Section 16.10.
Date and Time |
|
|  |
Section 16.11.
Process Control |
|
|  |
Section 16.12.
Internationalization |
|
|  |
Section 16.13.
Nonlocal Jumps |
|
|  |
Section 16.14.
Debugging |
|
|  |
Section 16.15.
Error Messages |
|
|  |
Chapter 17.
Standard Library Functions |
|
|  | _Exit |
|
|  | abort |
|
|  | abs |
|
|  | acos |
|
|  | acosh |
|
|  | asctime |
|
|  | asin |
|
|  | asinh |
|
|  | assert |
|
|  | atan |
|
|  | atan2 |
|
|  | atanh |
|
|  | atexit |
|
|  | atof |
|
|  | atoi |
|
|  | atol, atoll |
|
|  | bsearch |
|
|  | btowc |
|
|  | cabs |
|
|  | cacos |
|
|  | cacosh |
|
|  | calloc |
|
|  | carg |
|
|  | casin |
|
|  | casinh |
|
|  | catan |
|
|  | catanh |
|
|  | cbrt |
|
|  | ccos |
|
|  | ccosh |
|
|  | ceil |
|
|  | cexp |
|
|  | cimag |
|
|  | clearerr |
|
|  | clock |
|
|  | conj |
|
|  | copysign |
|
|  | cos |
|
|  | cosh |
|
|  | cpow |
|
|  | cproj |
|
|  | creal |
|
|  | csin |
|
|  | csinh |
|
|  | csqrt |
|
|  | ctan |
|
|  | ctanh |
|
|  | ctime |
|
|  | difftime |
|
|  | div |
|
|  | erf |
|
|  | erfc |
|
|  | exit |
|
|  | exp |
|
|  | exp2 |
|
|  | expm1 |
|
|  | fabs |
|
|  | fclose |
|
|  | fdim |
|
|  | feclearexcept |
|
|  | fegetenv |
|
|  | fegetexceptflag |
|
|  | fegetround |
|
|  | feholdexcept |
|
|  | feof |
|
|  | feraiseexcept |
|
|  | ferror |
|
|  | fesetenv |
|
|  | fesetexceptflag |
|
|  | fesetround |
|
|  | fetestexcept |
|
|  | feupdateenv |
|
|  | fflush |
|
|  | fgetc |
|
|  | fgetpos |
|
|  | fgets |
|
|  | fgetwc |
|
|  | fgetws |
|
|  | floor |
|
|  | fma |
|
|  | fmax |
|
|  | fmin |
|
|  | fmod |
|
|  | fopen |
|
|  | fpclassify |
|
|  | fprintf |
|
|  | fputc |
|
|  | fputs |
|
|  | fputwc |
|
|  | fputws |
|
|  | fread |
|
|  | free |
|
|  | freopen |
|
|  | frexp |
|
|  | fscanf |
|
|  | fseek |
|
|  | fsetpos |
|
|  | ftell |
|
|  | fwide |
|
|  | fwprintf |
|
|  | fwscanf |
|
|  | fwrite |
|
|  | getc |
|
|  | getchar |
|
|  | getenv |
|
|  | gets |
|
|  | getwc |
|
|  | getwchar |
|
|  | gmtime |
|
|  | hypot |
|
|  | ilogb |
|
|  | imaxabs |
|
|  | imaxdiv |
|
|  | isalnum |
|
|  | isalpha |
|
|  | isblank |
|
|  | iscntrl |
|
|  | isdigit |
|
|  | isfinite |
|
|  | isgraph |
|
|  | isgreater, isgreaterequal |
|
|  | isinf |
|
|  | isless, islessequal, islessgreater |
|
|  | islower |
|
|  | isnan |
|
|  | isnormal |
|
|  | isprint |
|
|  | ispunct |
|
|  | isspace |
|
|  | isunordered |
|
|  | isupper |
|
|  | iswalnum |
|
|  | iswalpha |
|
|  | iswblank |
|
|  | iswcntrl |
|
|  | iswctype |
|
|  | iswdigit |
|
|  | iswgraph |
|
|  | iswlower |
|
|  | iswprint |
|
|  | iswpunct |
|
|  | iswspace |
|
|  | iswupper |
|
|  | iswxdigit |
|
|  | isxdigit |
|
|  | labs |
|
|  | ldexp |
|
|  | ldiv |
|
|  | llabs |
|
|  | lldiv |
|
|  | llrint |
|
|  | llround |
|
|  | localeconv |
|
|  | localtime |
|
|  | log |
|
|  | log10 |
|
|  | log1p |
|
|  | log2 |
|
|  | logb |
|
|  | longjmp |
|
|  | lrint |
|
|  | lround |
|
|  | malloc |
|
|  | mblen |
|
|  | mbrlen |
|
|  | mbrtowc |
|
|  | mbsinit |
|
|  | mbsrtowcs |
|
|  | mbstowcs |
|
|  | mbtowc |
|
|  | memchr |
|
|  | memcmp |
|
|  | memcpy |
|
|  | memmove |
|
|  | memset |
|
|  | mktime |
|
|  | modf |
|
|  | nearbyint |
|
|  | nextafter |
|
|  | nexttoward |
|
|  | perror |
|
|  | pow |
|
|  | printf |
|
|  | putc |
|
|  | putchar |
|
|  | puts |
|
|  | putwc |
|
|  | putwchar |
|
|  | qsort |
|
|  | raise |
|
|  | rand |
|
|  | realloc |
|
|  | remainder |
|
|  | remove |
|
|  | remquo |
|
|  | rename |
|
|  | rewind |
|
|  | rint |
|
|  | round |
|
|  | scalbln, scalbn |
|
|  | scanf |
|
|  | setbuf |
|
|  | setjmp |
|
|  | setlocale |
|
|  | setvbuf |
|
|  | signal |
|
|  | signbit |
|
|  | sin |
|
|  | sinh |
|
|  | snprintf |
|
|  | sprintf |
|
|  | sqrt |
|
|  | srand |
|
|  | sscanf |
|
|  | strcat |
|
|  | strchr |
|
|  | strcmp |
|
|  | strcoll |
|
|  | strcpy |
|
|  | strcspn |
|
|  | strerror |
|
|  | strftime |
|
|  | strlen |
|
|  | strncat |
|
|  | strncmp |
|
|  | strncpy |
|
|  | strpbrk |
|
|  | strrchr |
|
|  | strspn |
|
|  | strstr |
|
|  | strtod, strtof, strtold |
|
|  | strtoimax |
|
|  | strtok |
|
|  | strtol, strtoll |
|
|  | strtoul, strtoull |
|
|  | strtoumax |
|
|  | strxfrm |
|
|  | swprintf |
|
|  | swscanf |
|
|  | system |
|
|  | tan |
|
|  | tanh |
|
|  | time |
|
|  | tmpfile |
|
|  | tmpnam |
|
|  | tolower |
|
|  | toupper |
|
|  | towctrans |
|
|  | towlower |
|
|  | towupper |
|
|  | trunc |
|
|  | ungetc |
|
|  | ungetwc |
|
|  | va_arg, va_copy, va_end, va_start |
|
|  | vfprintf, vprintf, vsnprintf, vsprintf |
|
|  | vfscanf, vscanf, vsscanf |
|
|  | vfwprintf, vswprintf, vwprintf |
|
|  | vfwscanf, vswscanf, vwscanf |
|
|  | wcrtomb |
|
|  | wcscat |
|
|  | wcschr |
|
|  | wcscmp |
|
|  | wcscoll |
|
|  | wcscpy |
|
|  | wcscspn |
|
|  | wcsftime |
|
|  | wcslen |
|
|  | wcsncat |
|
|  | wcsncmp |
|
|  | wcsncpy |
|
|  | wcspbrk |
|
|  | wcsrchr |
|
|  | wcsrtombs |
|
|  | wcsspn |
|
|  | wcsstr |
|
|  | wcstod, wcstof, wcstold |
|
|  | wcstoimax |
|
|  | wcstok |
|
|  | wcstol, wcstoll |
|
|  | wcstold |
|
|  | wcstoll |
|
|  | wcstombs |
|
|  | wcstoul, wcstoull |
|
|  | wcstoumax |
|
|  | wcsxfrm |
|
|  | wctob |
|
|  | wctomb |
|
|  | wctrans |
|
|  | wctype |
|
|  | wmemchr |
|
|  | wmemcmp |
|
|  | wmemcpy |
|
|  | wmemmove |
|
|  | wmemset |
|
|  | wprintf |
|
|  | wscanf |
|  |
Part III:
Basic Tools |
|
|  |
Chapter 18.
Compiling with GCC |
|
|  |
Section 18.1.
The GNU Compiler Collection |
|
|  |
Section 18.2.
Obtaining and Installing GCC |
|
|  |
Section 18.3.
Compiling C Programs with GCC |
|
|  |
Section 18.4.
C Dialects |
|
|  |
Section 18.5.
Compiler Warnings |
|
|  |
Section 18.6.
Optimization |
|
|  |
Section 18.7.
Debugging |
|
|  |
Section 18.8.
Profiling |
|
|  |
Section 18.9.
Option and Environment Variable Summary |
|
|  |
Chapter 19.
Using make to Build C Programs |
|
|  |
Section 19.1.
Targets, Prerequisites, and Commands |
|
|  |
Section 19.2.
The Makefile |
|
|  |
Section 19.3.
Rules |
|
|  |
Section 19.4.
Comments |
|
|  |
Section 19.5.
Variables |
|
|  |
Section 19.6.
Phony Targets |
|
|  |
Section 19.7.
Other Target Attributes |
|
|  |
Section 19.8.
Macros |
|
|  |
Section 19.9.
Functions |
|
|  |
Section 19.10.
Directives |
|
|  |
Section 19.11.
Running make |
|
|  |
Chapter 20.
Debugging C Programs with GDB |
|
|  |
Section 20.1.
Installing GDB |
|
|  |
Section 20.2.
A Sample Debugging Session |
|
|  |
Section 20.3.
Starting GDB |
|
|  |
Section 20.4.
Using GDB Commands |
|  | About the Authors |
|  | Colophon |
|  | Index |