Last update: Fri Jun 21 02:02:13 MDT 2019
@Book{Kernighan:1988:CPL,
author = "Brian W. Kernighan and Dennis M. Ritchie",
title = "The {C} Programming Language",
publisher = pub-PH,
address = pub-PH:adr,
edition = "Second",
pages = "xii + 272",
year = "1988",
ISBN = "0-13-110362-8 (paperback), 0-13-110370-9 (hardcover),
0-13-115817-1, 0-13-308621-6 (e-book), 0-13-308624-0",
ISBN-13 = "978-0-13-110362-7 (paperback), 978-0-13-110370-2
(hardcover), 978-0-13-115817-7, 978-0-13-308621-8
(e-book), 978-0-13-308624-9",
LCCN = "QA76.73.C15 K47 1988",
bibdate = "Wed Dec 15 10:36:09 1993",
bibsource = "http://www.math.utah.edu/pub/tex/bib/cccuj.bib;
http://www.math.utah.edu/pub/tex/bib/master.bib;
http://www.math.utah.edu/pub/tex/bib/unix.bib",
note = "This book is 200\% a {\em must} for any C programmers
\ldots{}. The answers to the exercises can be found in
\cite{Tondo:1989:CAB}.",
URL = "http://wiki.tuhs.org/doku.php?id=publications:c_prog_language",
acknowledgement = ack-nhfb,
remark = "This book is 200\% a {\em must} for any C programmers
\ldots{}. The answers to the exercises can be found in
\cite{Tondo:1989:CAB}.",
shorttableofcontents = "1: A Tutorial Introduction / 5 \\
2: Types, Operators, and Expressions / 35 \\
3: Control Flow / 55 \\
4: Functions and Program Structure / 67 \\
5: Pointers and Arrays / 93 \\
6: Structures / 127 \\
7: Input and Output / 151 \\
8: The UNIX System Interface / 169 \\
Appendix A: Reference Manual / 191 \\
Appendix B: Standard Library / 241 \\
B1 Input and Output: <stdio.h> / 241 \\
B2 Character Class Tests: <ctype.h> / 248 \\
B3 String Functions: <string.h> / 249 \\
B4 Mathematical Functions: <math.h> / 250 \\
B5 Utility Functions: <stdlib.h> / 251 \\
B6 Diagnostics: < assert.h> / 253 \\
B7 Variable Argument Lists: <stdarg.h> / 254 \\
B8 Non-local Jumps: <setjmp.h> / 254 \\
B9 Signals: <signal.h> / 255 \\
B10 Date and Time Functions: <time.h> / 255 \\
B11 Implementation-defined Limits: <limits.h> and
<float.h> / 257 \\
Appendix C: Summary of Changes / 259",
tableofcontents = "Preface / ix \\
Preface to the First Edition / xi \\
Introduction / 1 \\
1: A Tutorial Introduction / 5 \\
1.1 Getting Started / 5 \\
1.2 Variables and Arithmetic Expressions / 8 \\
1.3 The For Statement / 13 \\
1.4 Symbolic Constants / 14 \\
1.5 Character Input and Output / 15 \\
1.6 Arrays / 22 \\
1.7 Functions / 24 \\
1.8 Arguments --- Call by Value / 27 \\
1.9 Character Arrays / 28 \\
1.10 External Variables and Scope / 31 \\
2: Types, Operators, and Expressions / 35 \\
2.1 Variable Names / 35 \\
2.2 Data Types and Sizes / 36 \\
2.3 Constants / 37 \\
2.4 Declarations / 40 \\
2.5 Arithmetic Operators / 41 \\
2.6 Relational and Logical Operators / 41 \\
2.7 Type Conversions / 42 \\
2.8 Increment and Decrement Operators / 46 \\
2.9 Bitwise Operators / 48 \\
2.10 Assignment Operators and Expressions / 50 \\
2.11 Conditional Expressions / 51 \\
2.12 Precedence and Order of Evaluation / 52 \\
3: Control Flow / 55 \\
3.1 Statements and Blocks / 55 \\
3.2 If-Else / 55 \\
3.3 Else-If / 57 \\
3.4 Switch / 58 \\
3.5 Loops --- While and For / 60 \\
3.6 Loops --- Do-while / 63 \\
3.7 Break and Continue / 64 \\
3.8 Goto and Labels / 65 \\
4: Functions and Program Structure / 67 \\
4.1 Basics of Functions / 67 \\
4.2 Functions Returning Non-integers / 71 \\
4.3 External Variables / 73 \\
4.4 Scope Rules / 80 \\
4.5 Header Files / 81 \\
4.6 Static Variables / 83 \\
4.7 Register Variables / 83 \\
4.8 Block Structure / 84 \\
4.9 Initialization / 85 \\
4.10 Recursion / 86 \\
4.11 The C Preprocessor / 88 \\
5: Pointers and Arrays / 93 \\
5.1 Pointers and Addresses / 93 \\
5.2 Pointers and Function Arguments / 95 \\
5.3 Pointers and Arrays / 97 \\
5.4 Address Arithmetic / 100 \\
5.5 Character Pointers and Functions / 104 \\
5.6 Pointer Arrays; Pointers to Pointers / 107 \\
5.7 Multi-dimensional Arrays / 110 \\
5.8 Initialization of Pointer Arrays / 113 \\
5.9 Pointers vs. Multi-dimensional Arrays / 113 \\
5.10 Command-line Arguments / 114 \\
5.11 Pointers to Functions / 118 \\
5.12 Complicated Declarations / 122 \\
6: Structures / 127 \\
6.1 Basics of Structures / 127 \\
6.2 Structures and Functions / 129 \\
6.3 Arrays of Structures / 132 \\
6.4 Pointers to Structures / 136 \\
6.5 Self-referential Structures / 139 \\
6.6 Table Lookup / 143 \\
6.7 Typedef / 146 \\
6.8 Unions / 147 \\
6.9 Bit-fields / 149 \\
7: Input and Output / 151 \\
7.1 Standard Input and Output / 151 \\
7.2 Formatted Output --- Printf / 153 \\
7.3 Variable-length Argument Lists / 155 \\
7.4 Formatted Input --- Scanf / 157 \\
7.5 File Access / 160 \\
7.6 Error Handling --- Stderr and Exit / 163 \\
7.7 Line Input and Output / 164 \\
7.8 Miscellaneous Functions / 166 \\
8: The UNIX System Interface / 169 \\
8.1 File Descriptors / 169 \\
8.2 Low Level I/O --- Read and Write / 170 \\
8.3 Open, Creat, Close, Unlink / 172 \\
8.4 Random Access --- Lseek / 174 \\
8.5 Example --- An Implementation of Fopen and Getc /
175 \\
8.6 Example --- Listing Directories / 179 \\
8.7 Example --- A Storage Allocator / 185 \\
Appendix A: Reference Manual / 191 \\
A1 Introduction / 191 \\
A2 Lexical Conventions / 191 \\
A3 Syntax Notation / 194 \\
A4 Meaning of Identifiers / 195 \\
A5 Objects and Lvalues / 197 \\
A6 Conversions / 197 \\
A7 Expressions / 200 \\
A8 Declarations / 210 \\
A9 Statements / 222 \\
A10 External Declarations / 225 \\
All Scope and Linkage / 227 \\
A12 Preprocessing / 228 \\
A13 Grammar / 234 \\
Appendix B: Standard Library / 241 \\
B1 Input and Output: <stdio.h> / 241 \\
B2 Character Class Tests: <ctype.h> / 248 \\
B3 String Functions: <string.h> / 249 \\
B4 Mathematical Functions: <math.h> / 250 \\
B5 Utility Functions: <stdlib.h> / 251 \\
B6 Diagnostics: < assert.h> / 253 \\
B7 Variable Argument Lists: <stdarg.h> / 254 \\
B8 Non-local Jumps: <setjmp.h> / 254 \\
B9 Signals: <signal.h> / 255 \\
B10 Date and Time Functions: <time.h> / 255 \\
B11 Implementation-defined Limits: <limits.h> and
<float.h> / 257 \\
Appendix C: Summary of Changes / 259 \\
Index / 263",
}