| |
| |
List of Tables | |
| |
| |
Preface | |
| |
| |
| |
The C Language | |
| |
| |
| |
Introduction | |
| |
| |
| |
The Evolution of C | |
| |
| |
| |
Which Dialect of C Should You Use? | |
| |
| |
| |
An Overview of C Programming | |
| |
| |
| |
Conformance | |
| |
| |
| |
Syntax Notation | |
| |
| |
| |
Lexical Elements | |
| |
| |
| |
Character Set | |
| |
| |
| |
Comments | |
| |
| |
| |
Tokens | |
| |
| |
| |
Operators and Separators | |
| |
| |
| |
Identifiers | |
| |
| |
| |
Keywords | |
| |
| |
| |
Constants | |
| |
| |
| |
C++ Compatibility | |
| |
| |
| |
On Character Sets, Repertoires, and Encodings | |
| |
| |
| |
Exercises | |
| |
| |
| |
The C Preprocessor | |
| |
| |
| |
Preprocessor Commands | |
| |
| |
| |
Preprocessor Lexical Conventions | |
| |
| |
| |
Definition and Replacement | |
| |
| |
| |
File Inclusion | |
| |
| |
| |
Conditional Compilation | |
| |
| |
| |
Explicit Line Numbering | |
| |
| |
| |
Pragma Directive | |
| |
| |
| |
Error Directive | |
| |
| |
| |
C++ Compatibility | |
| |
| |
| |
Exercises | |
| |
| |
| |
Declarations | |
| |
| |
| |
Organization of Declarations | |
| |
| |
| |
Terminology | |
| |
| |
| |
Storage Class and Function Specifiers | |
| |
| |
| |
Type Specifiers and Qualifiers | |
| |
| |
| |
Declarators | |
| |
| |
| |
Initializers | |
| |
| |
| |
Implicit Declarations | |
| |
| |
| |
External Names | |
| |
| |
| |
C++ Compatibility | |
| |
| |
| |
Exercises | |
| |
| |
| |
Types | |
| |
| |
| |
Integer Types | |
| |
| |
| |
Floating-Point Types | |
| |
| |
| |
Pointer Types | |
| |
| |
| |
Array Types | |
| |
| |
| |
Enumerated Types | |
| |
| |
| |
Structure Types | |
| |
| |
| |
Union Types | |
| |
| |
| |
Function Types | |
| |
| |
| |
The Void Type | |
| |
| |
| |
Typedef Names | |
| |
| |
| |
Type Compatibility | |
| |
| |
| |
Type Names and Abstract Declarators | |
| |
| |
| |
C++ Compatibility | |
| |
| |
| |
Exercises | |
| |
| |
| |
Conversions and Representations | |
| |
| |
| |
Representations | |
| |
| |
| |
Conversions | |
| |
| |
| |
The Usual Conversions | |
| |
| |
| |
C++ Compatibility | |
| |
| |
| |
Exercises | |
| |
| |
| |
Expressions | |
| |
| |
| |
Objects, Lvalues, and Designators | |
| |
| |
| |
Expressions and Precedence | |
| |
| |
| |
Primary Expressions | |
| |
| |
| |
Postfix Expressions | |
| |
| |
| |
Unary Expressions | |
| |
| |
| |
Binary Operator Expressions | |
| |
| |
| |
Logical Operator Expressions | |
| |
| |
| |
Conditional Expressions | |
| |
| |
| |
Assignment Expressions | |
| |
| |
| |
Sequential Expressions | |
| |
| |
| |
Constant Expressions | |
| |
| |
| |
Order of Evaluation | |
| |
| |
| |
Discarded Values | |
| |
| |
| |
Optimization of Memory Accesses | |
| |
| |
| |
C++ Compatibility | |
| |
| |
| |
Exercises | |
| |
| |
| |
Statements | |
| |
| |
| |
General Syntactic Rules for Statements | |
| |
| |
| |
Expression Statements | |
| |
| |
| |
Labeled Statements | |
| |
| |
| |
Compound Statements | |
| |
| |
| |
Conditional Statements | |
| |
| |
| |
Iterative Statements | |
| |
| |
| |
Switch Statements | |
| |
| |
| |
Break and Continue Statements | |
| |
| |
| |
Return Statements | |
| |
| |
| |
Goto Statements | |
| |
| |
| |
Null Statements | |
| |
| |
| |
C++ Compatibility | |
| |
| |
| |
Exercises | |
| |
| |
| |
Functions | |
| |
| |
| |
Function Definitions | |
| |
| |
| |
Function Prototypes | |
| |
| |
| |
Formal Parameter Declarations | |
| |
| |
| |
Adjustments to Parameter Types | |
| |
| |
| |
Parameter-Passing Conventions | |
| |
| |
| |
Agreement of Parameters | |
| |
| |
| |
Function Return Types | |
| |
| |
| |
Agreement of Return Types | |
| |
| |
| |
The Main Program | |
| |
| |
| |
Inline Functions | |
| |
| |
| |
C++ Compatibility | |
| |
| |
| |
Exercises | |
| |
| |
| |
The C Libraries | |
| |
| |
| |
Introduction to the Libraries | |
| |
| |
| |
Standard C Facilities | |
| |
| |
| |
C++ Compatibility | |
| |
| |
| |
Library Headers and Names | |
| |
| |
| |
Standard Language Additions | |
| |
| |
| |
NULL, ptrdiff_t, size_t, offsetof | |
| |
| |
| |
EDOM, ERANGE, EILSEQ, errno, strerror, perror | |
| |
| |
| |
bool, false, true | |
| |
| |
| |
va_list, va_start, va_arg, va_end | |
| |
| |
| |
Standard C Operator Macros | |
| |
| |
| |
Character Processing | |
| |
| |
| |
isalnum, isalpha, iscntrl, iswalnum, iswalpha, iswcntrl | |
| |
| |
| |
iscsym, iscsymf | |
| |
| |
| |
isdigit, isodigit, isxdigit, iswdigit, iswxdigit | |
| |
| |
| |
isgraph, isprint, ispunct, iswgraph, iswprint, iswpunct | |
| |
| |
| |
islower, isupper, iswlower, iswupper | |
| |
| |
| |
isblank, isspace, iswhite, iswspace | |
| |
| |
| |
toascii | |
| |
| |
| |
toint | |
| |
| |
| |
tolower, toupper, towlower, towupper | |
| |
| |
| |
wctype_t, wctype, iswctype | |
| |
| |
| |
wctrans_t, wctrans | |
| |
| |
| |
String Processing | |
| |
| |
| |
strcat, strncat, wcscat, wcsncat | |
| |
| |
| |
strcmp, strncmp, wcscmp, wcsncmp | |
| |
| |
| |
strcpy, strncpy, wcscpy, wcsncpy | |
| |
| |
| |
strlen, wcslen | |
| |
| |
| |
strchr, strrchr, wcschr, wcsrchr | |
| |
| |
| |
strspn, strcspn, strpbrk, strrpbrk, wcsspn, wcscspn, wcspbrk | |
| |
| |
| |
strstr, strtok, wcsstr, wcstok | |
| |
| |
| |
strtod, strtof, strtold, strtol, strtoll, strtoul, strtoull | |
| |
| |
| |
atof, atoi, atol, atoll | |
| |
| |
| |
strcoll, strxfrm, wcscoll, wcsxfrm | |
| |
| |
| |
Memory Functions | |
| |
| |
| |
memchr, wmemchr | |
| |
| |
| |
memcmp, wmemcmp | |
| |
| |
| |
memcpy, memccpy, memmove, wmemcpy, wmemmove | |
| |
| |
| |
memset, wmemset | |
| |
| |
| |
Input/Output Facilities | |
| |
| |
| |
FILE, EOF, wchar_t, wint_t, WEOF | |
| |
| |
| |
fopen, fclose, fflush, freopen, fwide | |
| |
| |
| |
setbuf, setvbuf | |
| |
| |
| |
stdin, stdout, stderr | |
| |
| |
| |
fseek, ftell, rewind, fgetpos, fsetpos | |
| |
| |
| |
fgetc, fgetwc, getc, getwc, getchar, getwchar, ungetc, ungetwc | |
| |
| |
| |
fgets, fgetws, gets | |
| |
| |
| |
fscanf, fwscanf, scanf, wscanf, sscanf, swscanf | |
| |
| |
| |
fputc, fputwc, putc, putwc, putchar, putwchar | |
| |
| |
| |
fputs, fputws, puts | |
| |
| |
| |
fprintf, printf, sprintf, snprintf, fwprintf, wprintf, swprintf | |
| |
| |
| |
vfprintf, vfwprintf, vprintf, vwprintf, vsprintf, vswprintf, vfscanf, vfwscanf, vscanf, vwscanf, vsscanf, vswscanf | |
| |
| |
| |
fread, fwrite | |
| |
| |
| |
feof, ferror, clearerr | |
| |
| |
| |
remove, rename | |
| |
| |
| |
tmpfile, tmpnam, mktemp | |
| |
| |
| |
General Utilities | |
| |
| |
| |
malloc, calloc, malalloc, clalloc, free, cfree | |
| |
| |
| |
rand, srand, RAND_MAX | |
| |
| |
| |
atof, atoi, atol, atoll 1 | |
| |
| |
| |
strtod, strtof, strtold, strtol, strtoll, strtoul, strtoull | |
| |
| |
| |
abort, atexit, exit,_Exit, EXIT_FAILURE, EXIT_SUCCESS | |
| |
| |
| |
getenv | |
| |
| |
| |
system | |
| |
| |
| |
bsearch, qsort | |
| |
| |
| |
abs, labs, llabs, div, ldiv, lldiv | |
| |
| |
| |
mblen, mbtowc, wctomb | |
| |
| |
| |
mbstowcs, wcstombs | |
| |
| |
| |
Mathematical Functions | |
| |
| |
| |
abs, labs, llabs, div, ldiv, lldiv | |
| |
| |
| |
fabs | |
| |
| |
| |
ceil, floor, lrint, llrint, lround, llround, nearbyint, round, rint, trunc | |
| |
| |
| |
fmod, remainder, remquo | |
| |
| |
| |
frexp, ldexp, modf, scalbn | |
| |
| |
| |
exp, exp2, expm1, ilogb, log, log10, log1p, log2, logb | |
| |
| |
| |
cbrt, fma, hypot, pow, sqrt | |
| |
| |
| |
rand, srand, RAND_MAX | |
| |
| |
| |
cos, sin, tan, cosh, sinh, tanh | |
| |
| |
| |
acos, asin, atan, atan2, acosh, asinh, atanh | |
| |
| |
| |
fdim, fmax, fmin | |
| |
| |
| |
Type-Generic Macros | |
| |
| |
| |
erf, erfc, lgamma, tgamma | |
| |
| |
| |
fpclassify, isfinite, isinf, isnan, isnormal, signbit | |
| |
| |
| |
copysign, nan, nextafter, nexttoward | |
| |
| |
| |
isgreater, isgreaterequal, isless, islessequal, islessgreater, isunordered | |
| |
| |
| |
Time and Date Functions | |
| |
| |
| |
clock, clock_t, CLOCKS_PER_SEC, times | |
| |
| |
| |
time, time_t | |
| |
| |
| |
asctime, ctime | |
| |
| |
| |
gmtime, localtime, mktime | |
| |
| |
| |
difftime | |
| |
| |
| |
strftime, wcsftime | |
| |
| |
| |
Control Functions | |
| |
| |
| |
assert, NDEBUG | |
| |
| |
| |
system, exec | |
| |
| |
| |
exit, abort | |
| |
| |
| |
setjmp, longjmp, jmp_buf | |
| |
| |
| |
atexit | |
| |
| |
| |
signal, raise, gsignal, ssignal, psignal | |
| |
| |
| |
sleep, alarm | |
| |
| |
| |
Locale | |
| |
| |
| |
setlocale | |
| |
| |
| |
localeconv | |
| |
| |
| |
Extended Integer Types | |
| |
| |
| |
General Rules | |
| |
| |
| |
Exact-Size Integer Types | |
| |
| |
| |
Least-Size Types of a Minimum Width | |
| |
| |
| |
Fast Types of a Minimum Width | |
| |
| |
| |
Pointer-Size and Maximum-Size Integer Types | |
| |
| |
| |
Ranges of ptrdiff_t, size_t, wchar_t, wint_t, and sig_atomic_t | |
| |
| |
| |
imaxabs, imaxdiv, imaxdiv_t | |
| |
| |
| |
strtoimax, strtouimax | |
| |
| |
| |
wcstoimax, wcstoumax | |
| |
| |
| |
Floating-Point Environment | |
| |
| |
| |
Overview | |
| |
| |
| |
Floating-Point Environment | |
| |
| |
| |
Floating-Point Exceptions | |
| |
| |
| |
Floating-Point Rounding Modes | |
| |
| |
| |
Complex Arithmetic | |
| |
| |
| |
Complex Library Conventions | |
| |
| |
| |
complex, _Complex_I, imaginary,_Imaginary_I, I | |
| |
| |
| |
CX_LIMITED_RANGE | |
| |
| |
| |
cacos, casin, catan, ccos, csin, ctan | |
| |
| |
| |
cacosh, casinh, catanh, ccosh, csinh, ctanh | |
| |
| |
| |
cexp, clog, cabs, cpow, csqrt | |
| |
| |
| |
carg, cimag, creal, conj, cproj | |
| |
| |
| |
Wide and Multibyte Facilities | |
| |
| |
| |
Basic Types and Macros | |
| |
| |
| |
Conversions Between Wide and Multibyte Characters | |
| |
| |
| |
Conversions Between Wide and Multibyte Strings | |
| |
| |
| |
Conversions to Arithmetic Types | |
| |
| |
| |
Input and Output Functions | |
| |
| |
| |
String Functions | |
| |
| |
| |
Date and Time Conversions | |
| |
| |
| |
Wide-Character Classification and Mapping Functions | |
| |
| |
| |
The ASCII Character Set | |
| |
| |
| |
Syntax | |
| |
| |
| |
Answers to the Exercises | |
| |
| |
Index | |