C: A Software Engineering Approach

This book describes the C programming language and software engineering prin­ ciples of program construction. The book is intended primarily as a textbook for beginning and intermediate C programmers. It does not assume previous knowl­ edge of C, nor of any high-level language, though it does assume...

Full description

Bibliographic Details
Main Authors: Darnell, Peter A., Margolis, Philip E. (Author)
Format: eBook
Language:English
Published: New York, NY Springer New York 1991, 1991
Edition:2nd ed. 1991
Series:Springer Books on Professional Computing
Subjects:
Online Access:
Collection: Springer Book Archives -2004 - Collection details see MPG.ReNa
Table of Contents:
  • 12.3 Project Management and Cost Estimation
  • 12.4 Software Tools for Software Production
  • 12.5 Debugging
  • 12.6 Testing
  • 12.7 Performance Analysis
  • 12.8 Documentation
  • Exercises
  • Appendix A: The ANSI Runtime Library
  • A.1 Function Names
  • A.2 Header Files
  • A.3 Synopses
  • A.4 Functions vs. Macros
  • A.5 Error Handling
  • A.6 Diagnostics
  • A.7 Character Handling
  • A.8 Setting Locale Parameters
  • A.9 Mathematics
  • A.10 Nonlocal Jumps
  • A.11 Signal Handling
  • A.12 Variable Argument Lists
  • A.13 I/O Functions
  • A.14 General Utilities
  • A.15 String-Handling Functions
  • A.16 Multibyte Character Functions
  • A.17 Date and Time Functions
  • Appendix B: Syntax of ANSI C
  • Appendix C: Implementation Limits
  • C.1 Translation Limits
  • C.2 Numerical Limits
  • Appendix D: Differences Between the ANSI and K&R Standards
  • D.1 Source Translation Differences
  • D.2 Data Type Differences
  • D.3 Statement Differences
  • D.4 Expression Differences
  • 7.1 Fixed vs. Automatic Duration
  • 7.2 Scope
  • 7.3 Global Variables
  • 7.4 The register Specifier
  • 7.5 Summary of Storage Classes
  • 7.6 Dynamic Memory Allocation
  • Exercises
  • 8 Structures and Unions
  • 8.1 Structures
  • 8.2 Linked Lists
  • 8.3 Unions
  • 8.4 enum Declarations
  • Exercises
  • 9 Functions
  • 9.1 Passing Arguments
  • 9.2 Declarations and Calls
  • 9.3 Pointers to Functions
  • 9.4 Recursion
  • 9.5 The main() Function
  • 9.6 Complex Declarations
  • Exercises
  • 10 The C Preprocessor
  • 10.1 Macro Substitution
  • 10.2 Conditional Compilation
  • 10.3 Include Facility
  • 10.4 Line Control
  • Exercises
  • 11 Input and Output
  • 11.1 Streams
  • 11.2 Buffering
  • 11.3 The Header File
  • 11.4 Error Handling
  • 11.5 Opening and Closing a File
  • 11.6 Reading and Writing Data
  • 11.7 Selecting an I/O Method
  • 11.8 Unbuffered I/O
  • 11.9 Random Access
  • Exercises
  • 12 Software Engineering
  • 12.1 Product Specification
  • 12.2 Software Design
  • D.5 Storage Class and Initialization Differences
  • D.6 Preprocessor Differences
  • Appendix E: Reserved Names
  • Appendix F: C Interpreter Listing
  • Appendix G: ASCII Codes
  • 1 Introduction to Programming
  • 1.1 High-Level Programming Languages
  • 1.2 History of C
  • 1.3 ANSI Standard
  • 1.4 Nature of C
  • 2 Essentials
  • 2.1 Program Development
  • 2.2 Functions
  • 2.3 Anatomy of a C Function
  • 2.4 Formatting Source Files
  • 2.5 The main() Function
  • 2.6 The printf() Function
  • 2.7 The scanf() Function
  • 2.8 The Preprocessor
  • Exercises
  • 3 Scalar Data Types
  • 3.1 Declarations
  • 3.2 Different Types of Integers
  • 3.3 Different Kinds of Integer Constants
  • 3.4 Floating-Point Types
  • 3.5 Initialization
  • 3.6 Mixing Types
  • 3.7 Explicit Conversions — Casts
  • 3.8 Enumeration Types
  • 3.9 The void Data Type
  • 3.10 Typedefs
  • 3.11 Finding the Address of an Object
  • 3.12 Introduction to Pointers
  • Exercises
  • 4 Control Flow
  • 4.1 Conditional Branching
  • 4.2 The switch Statement
  • 4.3 Looping
  • 4.4 Nested Loops
  • 4.5 A Simple Calculator Program
  • 4.6 The break and continue Statements
  • 4.7 The goto Statement
  • 4.8 Infinite Loops
  • Exercises
  • 5 Operators and Expressions
  • 5.1 Precedence and Associativity
  • 5.2 Unary Plus and Minus Operators
  • 5.3 Binary Arithmetic Operators
  • 5.4 Arithmetic Assignment Operators
  • 5.5 Increment and Decrement Operators
  • 5.6 Comma Operator
  • 5.7 Relational Operators
  • 5.8 Logical Operators
  • 5.9 Bit-Manipulation Operators
  • 5.10 Bitwise Assignment Operators
  • 5.11 Cast Operator
  • 5.12 sizeof operator
  • 5.13 Conditional Operator (? :)
  • 5.14 Memory Operators
  • Exercises
  • 6 Arrays and Pointers
  • 6.1 Declaring an Array
  • 6.2 How Arrays Are Stored in Memory
  • 6.3 Initializing Arrays
  • 6.4 Array Example: Encryption and Decryption
  • 6.5 Pointer Arithmetic
  • 6.6 Passing Pointers as Function Arguments
  • 6.7 Accessing Array Elements Through Pointers
  • 6.8 Passing Arrays as Function Arguments
  • 6.9 Sorting Algorithms
  • 6.10 Strings.-6.11 Multidimensional Arrays
  • 6.12 Arrays of Pointers
  • 6.13 Pointers to Pointers
  • Exercises
  • 7 Storage Classes