Preface
1. Introduction
1.1. Introduction
1.2. The c programming language
1.3. C standard library
1.4. C++ and other C-based languages
1.5. Typical c program development environment
1.6. Test-driving a C application in Windows, Linux and Mac OS X
1.7. Operating systems
2. Introduction to C programming
2.1. Introduction
2.2. A simple C program: printing a line of text
2.3 .Another simple C program: adding two integers
2.4. Arithmetic in C
2.5. Decision making: equality and relational operators
2.6. Secure C programming
3. Control statements: Part I
3.1. Introduction
3.2. Control structures
3.3. The if selection statement
3.4. The if…else selection statement
3.5. The while repetition statement
3.6. Class average with counter-controlled repetition
3.7. Class average with sentinel-controlled repetition
3.8. Nested control statements
3.9. Assignment operators
3.10. Increment and decrement operators
3.11. Secure C programming
4. Control statements: Part II
4.1. Introduction
4.2. Repetition essentials
4.3. Counter-controlled repetition
4.4. For repetition statement
4.5. For statement: notes and observations
4.6. Examples using the for statement
4.7. switch multiple-selection statement
4.8. do…while repetition statement
4.9. break and continue statements
4.10. Logical operators
4.11. Confusing equality (==) and assignment (=) operators
4.12. Secure C programming
5. Functions
5.1. Introduction
5.2. Program modules in C
5.3. Math library functions
5.4. Functions
5.5. Function definitions
5.6. Function prototypes: a deeper look
5.7. Function call stack and stack frames
5.8. Headers
5.9. Passing arguments by value and by reference
5.10. Random number generation
5.11. Example: a game of chance
5.12. Storage classes
5.13. Scope rules
5.14. Recursion
5.15. Example using recursion: fibonacci series
5.16. Recursion vs. iteration
5.17. Secure C programming
6. Arrays
6.1. Introduction
6.2. Arrays
6.3. Defining arrays
6.4. Array examples
6.5. Dassing arrays to functions
6.6. Sorting arrays
6.7. Case study: computing mean, median and mode using arrays
6.8. Searching arrays
6.9. Multidimensional arrays
6.10. Variable-length arrays
6.11. Secure C programming
7. Pointers
7.1. Introduction
7.2. Pointer variable definitions and initialization
7.3. Pointer operators
7.4. Passing arguments to functions by reference
7.5. Using the const qualifier with pointers
7.6. Bubble sort using pass-by-reference
7.7. sizeof operator
7.8. Pointer expressions and pointer arithmetic
7.9. Relationship between pointers and arrays
7.10. Arrays of pointers
7.11. Case study: card shuffling and dealing simulation
7.12. Pointers to functions
7.13. Secure C programming
8. Characters and strings
8.1. Introduction
8.2. Fundamentals of strings and characters
8.3. Character-handling library
8.4. String-conversion functions
8.5. Standard input/output library functions
8.6. String-manipulation functions of the string-handling library
8.7. Comparison functions of the string-handling library
8.8. Search functions of the string-handling library
8.9. Memory functions of the string-handling library
8.10. Other functions of the string-handling library
8.11. Secure C programming
9. Formatted input/output
9.1. Introduction
9.2. Streams
9.3. Formatting output with printf
9.4. Printing integers
9.5. Printing floating-point numbers
9.6. Printing strings and characters
9.7. Other conversion specifiers
9.8. Printing with field widths and precision
9.9. Using flags in the printf format control string
9.10. Printing literals and escape sequences
9.11. Reading formatted input with scanf
9.12. Secure C programming
10. Structures, unions, bit manipulation and enumerations
10.1. Introduction
10.2. Structure definitions
10.3. Initializing structures
10.4. Accessing structure members
10.5. Using structures with functions
10.6. typedef
10.7. Example: high-performance card shuffling and dealing simulation
10.8. Unions
10.9. Bitwise operators
10.10. Bit fields
10.11. Enumeration constants
10.12. Secure C programming
11. File processing
11.1. Introduction
11.2. Files and streams
11.3. Creating a sequential-access file
11.4. Reading data from a sequential-access file
11.5. Random-access files
11.6. Creating a random-access file
11.7. Writing data randomly to a random-access file
11.8. Reading data from a random-access file
11.9. Case study: transaction-processing program
11.10. Secure C programming
12. Data structures
12.1. Introduction
12.2. Self-referential structures
12.3. Dynamic memory allocation
12.4. Linked lists
12.5. Stacks
12.6. Queues
12.7. Trees
12.8. Secure C programming
13. Preprocessor
13.1. Introduction
13.2. #include preprocessor directive
13.3. #define preprocessor directive: symbolic constants
13.4. #define preprocessor directive: macrOS
13.5. Conditional compilation
13.6. #error and #pragma preprocessor directives
13.7. # and ## operators
13.8. Line numbers
13.9. Predefined symbolic constants
13.10. Assertions
13.11. Secure C programming
14. Other topics
14.1. Introduction
14.2. Redirecting I/O
14.3. Variable-length argument lists
14.4. Using command-line arguments
14.5. Notes on compiling multiple-source-file programs
14.6. Program termination with exit and atexit
14.7. Suffixes for integer and floating-point literals
14.8. Signal handling
14.9. Dynamic memory allocation: functions calloc and realloc
14.10. Unconditional branching with goto
A. Operator precedence chart
B. ASCII character set
C. Number systems
D. Sorting: a deeper look
E. Additional features of the C standard
F. Using the Visual Studio debugger
G. Using the GNU debugger
Index