Description

Book Synopsis

Stephen Prata , now retired, taught astronomy, physics, and programming at the College of Marin in Kentfield, California. He received his B.S. from the California Institute of Technology and his Ph.D. from the University of California, Berkeley. His association with computers began with the computer modeling of star clusters. Stephen as authored or coauthored over a dozen books, including C++ Primer Plus and Unix Primer Plus.



Table of Contents

Preface xxvii

1 Getting Ready 1

Whence C? 1

Why C? 2

Design Features 2

Efficiency 3

Portability 3

Power and Flexibility 3

Programmer Oriented 3

Shortcomings 4

Whither C? 4

What Computers Do 5

High-level Computer Languages and Compilers 6

Language Standards 7

The First ANSI/ISO C Standard 8

The C99 Standard 8

The C11 Standard 9

Using C: Seven Steps 9

Step 1: Define the Program Objectives 10

Step 2: Design the Program 10

Step 3: Write the Code 11

Step 4: Compile 11

Step 5: Run the Program 12

Step 6: Test and Debug the Program 12

Step 7: Maintain and Modify the Program 13

Commentary 13

Programming Mechanics 13

Object Code Files, Executable Files, and Libraries 14

Unix System 16

The GNU Compiler Collection and the LLVM Project 18

Linux Systems 18

Command-Line Compilers for the PC 19

Integrated Development Environments (Windows) 19

The Windows/Linux Option 21

C on the Macintosh 21

How This Book Is Organized 22

Conventions Used in This Book 22

Typeface 22

Program Output 23

Special Elements 24

Summary 24

Review Questions 25

Programming Exercise 25

2 Introducing C 27

A Simple Example of C 27

The Example Explained 28

Pass 1: Quick Synopsis 30

Pass 2: Program Details 31

The Structure of a Simple Program 40

Tips on Making Your Programs Readable 41

Taking Another Step in Using C 42

Documentation 43

Multiple Declarations 43

Multiplication 43

Printing Multiple Values 43

While You're at It–Multiple Functions 44

Introducing Debugging 46

Syntax Errors 46

Semantic Errors 47

Program State 49

Keywords and Reserved Identifiers 49

Key Concepts 50

Summary 51

Review Questions 51

Programming Exercises 53

3 Data and C 55

A Sample Program 55

What's New in This Program? 57

Data Variables and Constants 59

Data: Data-Type Keywords 59

Integer Versus Floating-Point Types 60

The Integer 61

The Floating-Point Number 61

Basic C Data Types 62

The int Type 62

Other Integer Types 66

Using Characters: Type char 71

The _Bool Type 77

Portable Types: stdint.h and inttypes.h 77

Types float, double, and long double 79

Complex and Imaginary Types 85

Beyond the Basic Types 85

Type Sizes 87

Using Data Types 88

Arguments and Pitfalls 89

One More Example: Escape Sequences 91

What Happens When the Program Runs 91

Flushing the Output 92

Key Concepts 93

Summary 93

Review Questions 94

Programming Exercises 97

4 Character Strings and Formatted Input/Output 99

Introductory Program 99

Character Strings: An Introduction 101

Type char Arrays and the Null Character 101

Using Strings 102

The strlen() Function 103

Constants and the C Preprocessor 106

The const Modifier 109

Manifest Constants on the Job 109

Exploring and Exploiting printf() and scanf() 112

The printf() Function 112

Using printf() 113

Conversion Specification Modifiers for printf() 115

What Does a Conversion Specification Convert? 122

Using scanf() 128

The * Modifier with printf() and scanf() 133

Usage Tips for printf() 135

Key Concepts 136

Summary 137

Review Questions 138

Programming Exercises 140

5 Operators, Expressions, and Statements 143

Introducing Loops 144

Fundamental Operators 146

Assignment Operator: = 146

Addition Operator: + 149

Subtraction Operator: — 149

Sign Operators: — and + 150

Multiplication Operator: * 151

Division Operator: / 153

Operator Precedence 154

Precedence and the Order of Evaluation 156

Some Additional Operators 157

The sizeof Operator and the size_t Type 158

Modulus Operator: % 159

Increment and Decrement Operators: ++ and -- 160

Decrementing: -- 164

Precedence 165

Don't Be Too Clever 166

Expressions and Statements 167

Expressions 167

Statements 168

Compound Statements (Blocks) 171

Type Conversions 174

The Cast Operator 176

Function with Arguments 177

A Sample Program 180

Key Concepts 182

Summary 182

Review Questions 183

Programming Exercises 187

6 C Control Statements: Looping 189

Revisiting the while Loop 190

Program Comments 191

C-Style Reading Loop 192

The while Statement 193

Terminating a while Loop 194

When a Loop Terminates 194

while: An Entry-Condition Loop 195

Syntax Points 195

Which Is Bigger: Using Relational Operators and Expressions 197

What Is Truth? 199

What Else Is True? 200

Troubles with Truth 201

The New _Bool Type 203

Precedence of Relational Operators 205

Indefinite Loops and Counting Loops 207

The for Loop 208

Using for for Flexibility 210

More Assignment Operators: +=, -=, *=, /=, %= 215

The Comma Operator 215

Zeno Meets the for Loop 218

An Exit-Condition Loop: do while 220

Which Loop? 223

Nested Loops 224

Program Discussion 225

A Nested Variation 225

Introducing Arrays 226

Using a for Loop with an Array 228

A Loop Example Using a Function Return Value 230

Program Discussion 232

Using Functions with Return Values 233

Key Concepts 234

Summary 235

Review Questions 236

Programming Exercises 241

7 C Control Statements: Branching and Jumps 245

The if Statement 246

Adding else to the if Statement 248

Another Example: Introducing getchar() and putchar() 250

The ctype.h Family of Character Functions 252

Multiple Choice else if 254

Pairing else with if 257

More Nested ifs 259

Let's Get Logical 263

Alternate Spellings: The iso646.h Header File 265

Precedence 265

Order of Evaluation 266

Ranges 267

A Word-Count Program 268

The Conditional Operator: ?: 271

Loop Aids: continue and break 274

The continue Statement 274

The break Statement 277

Multiple Choice: switch and break 280

Using the switch Statement 281

Reading Only the First Character of a Line 283

Multiple Labels 284

switch and if else 286

The goto Statement 287

Avoiding goto 287

Key Concepts 291

Summary 291

Review Questions 292

Programming Exercises 296

8 Character Input/Output and Input Validation 299

Single-Character I/O: getchar() and putchar() 300

Buffers 301

Terminating Keyboard Input 302

Files, Streams, and Keyboard Input 303

The End of File 304

Redirection and Files 307

Unix, Linux, and Windows Command Prompt Redirection 307

Creating a Friendlier User Interface 312

Working with Buffered Input 312

Mixing Numeric and Character Input 314

Input Validation 317

Analyzing the Program 322

The Input Stream and Numbers 323

Menu Browsing 324

Tasks 324

Toward a Smoother Execution 325

Mixing Character and Numeric Input 327

Key Concepts 330

Summary 331

Review Questions 331

Programming Exercises 332

9 Functions 335

Reviewing Functions 335

Creating and Using a Simple Function 337

Analyzing the Program 338

Function Arguments 340

Defining a Function with an Argument: Formal Parameters 342

Prototyping a Function with Arguments 343

Calling a Function with an Argument: Actual Arguments 343

The Black-Box Viewpoint 345

Returning a Value from a Function with return 345

Function Types 348

ANSI C Function Prototyping 349

The Problem 350

The ANSI C Solution 351

No Arguments and Unspecified Arguments 352

Hooray for Prototypes 353

Recursion 353

Recursion Revealed 354

Recursion Fundamentals 355

Tail Recursion 356

Recursion and Reversal 358

Recursion Pros and Cons 360

Compiling Programs with Two or More Source Code Files 361

Unix 362

Linux 362

DOS Command-Line Compilers 362

Windows and Apple IDE Compilers 362

Using Header Files 363

Finding Addresses: The & Operator 367

Altering Variables in the Calling Function 369

Pointers: A First Look 371

The Indirection Operator: * 371

Declaring Pointers 372

Using Pointers to Communicate Between Functions 373

Key Concepts 378

Summary 378

Review Questions 379

Programming Exercises 380

10 Arrays and Pointers 383

Arrays 383

Initialization 384

Designated Initializers (C99) 388

Assigning Array Values 390

Array Bounds 390

Specifying an Array Size 392

Multidimensional Arrays 393

Initializing a Two-Dimensional Array 397

More Dimensions 398

Pointers and Arrays 398

Functions, Arrays, and Pointers 401

Using Pointer Parameters 404

Comment: Pointers and Arrays 407

Pointer Operations 407

Protecting Array Contents 412

Using const with Formal Parameters 413

More About const 415

Pointers and Multidimensional Arrays 417

Pointers to Multidimensional Arrays 420

Pointer Compatibility 421

Functions and Multidimensional Arrays 423

Variable-Length Arrays (VLAs) 427

Compound Literals 431

Key Concepts 434

Summary 435

Review Questions 436

Programming Exercises 439

11 Character Strings and String Functions 441

Representing Strings and String I/O 441

Defining Strings Within a Program 442

Pointers and Strings 451

String Input 453

Creating Space 453

The Unfortunate gets() Function 453

The Alternatives to gets() 455

The scanf() Function 462

String Output 464

The puts() Function 464

The fputs() Function 465

The printf() Function 466

The Do-It-Yourself Option 466

String Functions 469

The strlen() Function 469

The strcat() Function 471

The strncat() Function 473

The strcmp() Function 475

The strcpy() and strncpy() Functions 482

The sprintf() Function 487

Other String Functions 489

A String Example: Sorting Strings 491

Sorting Pointers Instead of Strings 493

The Selection Sort Algorithm 494

The ctype.h Character Functions and Strings 495

Command-Line Arguments 497

Command-Line Arguments in Integrated Environments 500

Command-Line Arguments with the Macintosh 500

String-to-Number Conversions 500

Key Concepts 504

Summary 504

Review Questions 505

Programming Exercises 508

12 Storage Classes, Linkage, and Memory Management 511

Storage Classes 511

Scope 513

Linkage 515

Storage Duration 516

Automatic Variables 518

Register Variables 522

Static Variables with Block Scope 522

Static Variables with External Linkage 524

Static Variables with Internal Linkage 529

Multiple Files 530

Storage-Class Specifier Roundup 530

Storage Classes and Functions 533

Which Storage Class? 534

A Random-Number Function and a Static Variable 534

Roll 'Em 538

Allocated Memory: malloc() and free() 543

The Importance of free() 547

The calloc() Function 548

Dynamic Memory Allocation and Variable-Length Arrays 548

Storage Classes and Dynamic Memory Allocation 549

ANSI C Type Qualifiers 551

The const Type Qualifier 552

The volatile Type Qualifier 554

The restrict Type Qualifier 555

The _Atomic Type Qualifier (C11) 556

New Places for Old Keywords 557

Key Concepts 558

Summary 558

Review Questions 559

Programming Exercises 561

13 File Input/Output 565

Communicating with Files 565

What Is a File? 566

The Text Mode and the Binary Mode 566

Levels of I/O 568

Standard Files 568

Standard I/O 568

Checking for Command-Line Arguments 569

The fopen() Function 570

The getc() and putc() Functions 572

End-of-File 572

The fclose() Function 57

C Primer Plus

    Product form

    £62.10

    Includes FREE delivery

    Order before 4pm today for delivery by Fri 19 Jun 2026.

    A Paperback / softback by Stephen Prata

    Out of stock


      View other formats and editions of C Primer Plus by Stephen Prata

      Publisher: Pearson Education (US)
      Publication Date: 19/12/2013
      ISBN13: 9780321928429, 978-0321928429
      ISBN10: 0321928423

      Description

      Book Synopsis

      Stephen Prata , now retired, taught astronomy, physics, and programming at the College of Marin in Kentfield, California. He received his B.S. from the California Institute of Technology and his Ph.D. from the University of California, Berkeley. His association with computers began with the computer modeling of star clusters. Stephen as authored or coauthored over a dozen books, including C++ Primer Plus and Unix Primer Plus.



      Table of Contents

      Preface xxvii

      1 Getting Ready 1

      Whence C? 1

      Why C? 2

      Design Features 2

      Efficiency 3

      Portability 3

      Power and Flexibility 3

      Programmer Oriented 3

      Shortcomings 4

      Whither C? 4

      What Computers Do 5

      High-level Computer Languages and Compilers 6

      Language Standards 7

      The First ANSI/ISO C Standard 8

      The C99 Standard 8

      The C11 Standard 9

      Using C: Seven Steps 9

      Step 1: Define the Program Objectives 10

      Step 2: Design the Program 10

      Step 3: Write the Code 11

      Step 4: Compile 11

      Step 5: Run the Program 12

      Step 6: Test and Debug the Program 12

      Step 7: Maintain and Modify the Program 13

      Commentary 13

      Programming Mechanics 13

      Object Code Files, Executable Files, and Libraries 14

      Unix System 16

      The GNU Compiler Collection and the LLVM Project 18

      Linux Systems 18

      Command-Line Compilers for the PC 19

      Integrated Development Environments (Windows) 19

      The Windows/Linux Option 21

      C on the Macintosh 21

      How This Book Is Organized 22

      Conventions Used in This Book 22

      Typeface 22

      Program Output 23

      Special Elements 24

      Summary 24

      Review Questions 25

      Programming Exercise 25

      2 Introducing C 27

      A Simple Example of C 27

      The Example Explained 28

      Pass 1: Quick Synopsis 30

      Pass 2: Program Details 31

      The Structure of a Simple Program 40

      Tips on Making Your Programs Readable 41

      Taking Another Step in Using C 42

      Documentation 43

      Multiple Declarations 43

      Multiplication 43

      Printing Multiple Values 43

      While You're at It–Multiple Functions 44

      Introducing Debugging 46

      Syntax Errors 46

      Semantic Errors 47

      Program State 49

      Keywords and Reserved Identifiers 49

      Key Concepts 50

      Summary 51

      Review Questions 51

      Programming Exercises 53

      3 Data and C 55

      A Sample Program 55

      What's New in This Program? 57

      Data Variables and Constants 59

      Data: Data-Type Keywords 59

      Integer Versus Floating-Point Types 60

      The Integer 61

      The Floating-Point Number 61

      Basic C Data Types 62

      The int Type 62

      Other Integer Types 66

      Using Characters: Type char 71

      The _Bool Type 77

      Portable Types: stdint.h and inttypes.h 77

      Types float, double, and long double 79

      Complex and Imaginary Types 85

      Beyond the Basic Types 85

      Type Sizes 87

      Using Data Types 88

      Arguments and Pitfalls 89

      One More Example: Escape Sequences 91

      What Happens When the Program Runs 91

      Flushing the Output 92

      Key Concepts 93

      Summary 93

      Review Questions 94

      Programming Exercises 97

      4 Character Strings and Formatted Input/Output 99

      Introductory Program 99

      Character Strings: An Introduction 101

      Type char Arrays and the Null Character 101

      Using Strings 102

      The strlen() Function 103

      Constants and the C Preprocessor 106

      The const Modifier 109

      Manifest Constants on the Job 109

      Exploring and Exploiting printf() and scanf() 112

      The printf() Function 112

      Using printf() 113

      Conversion Specification Modifiers for printf() 115

      What Does a Conversion Specification Convert? 122

      Using scanf() 128

      The * Modifier with printf() and scanf() 133

      Usage Tips for printf() 135

      Key Concepts 136

      Summary 137

      Review Questions 138

      Programming Exercises 140

      5 Operators, Expressions, and Statements 143

      Introducing Loops 144

      Fundamental Operators 146

      Assignment Operator: = 146

      Addition Operator: + 149

      Subtraction Operator: — 149

      Sign Operators: — and + 150

      Multiplication Operator: * 151

      Division Operator: / 153

      Operator Precedence 154

      Precedence and the Order of Evaluation 156

      Some Additional Operators 157

      The sizeof Operator and the size_t Type 158

      Modulus Operator: % 159

      Increment and Decrement Operators: ++ and -- 160

      Decrementing: -- 164

      Precedence 165

      Don't Be Too Clever 166

      Expressions and Statements 167

      Expressions 167

      Statements 168

      Compound Statements (Blocks) 171

      Type Conversions 174

      The Cast Operator 176

      Function with Arguments 177

      A Sample Program 180

      Key Concepts 182

      Summary 182

      Review Questions 183

      Programming Exercises 187

      6 C Control Statements: Looping 189

      Revisiting the while Loop 190

      Program Comments 191

      C-Style Reading Loop 192

      The while Statement 193

      Terminating a while Loop 194

      When a Loop Terminates 194

      while: An Entry-Condition Loop 195

      Syntax Points 195

      Which Is Bigger: Using Relational Operators and Expressions 197

      What Is Truth? 199

      What Else Is True? 200

      Troubles with Truth 201

      The New _Bool Type 203

      Precedence of Relational Operators 205

      Indefinite Loops and Counting Loops 207

      The for Loop 208

      Using for for Flexibility 210

      More Assignment Operators: +=, -=, *=, /=, %= 215

      The Comma Operator 215

      Zeno Meets the for Loop 218

      An Exit-Condition Loop: do while 220

      Which Loop? 223

      Nested Loops 224

      Program Discussion 225

      A Nested Variation 225

      Introducing Arrays 226

      Using a for Loop with an Array 228

      A Loop Example Using a Function Return Value 230

      Program Discussion 232

      Using Functions with Return Values 233

      Key Concepts 234

      Summary 235

      Review Questions 236

      Programming Exercises 241

      7 C Control Statements: Branching and Jumps 245

      The if Statement 246

      Adding else to the if Statement 248

      Another Example: Introducing getchar() and putchar() 250

      The ctype.h Family of Character Functions 252

      Multiple Choice else if 254

      Pairing else with if 257

      More Nested ifs 259

      Let's Get Logical 263

      Alternate Spellings: The iso646.h Header File 265

      Precedence 265

      Order of Evaluation 266

      Ranges 267

      A Word-Count Program 268

      The Conditional Operator: ?: 271

      Loop Aids: continue and break 274

      The continue Statement 274

      The break Statement 277

      Multiple Choice: switch and break 280

      Using the switch Statement 281

      Reading Only the First Character of a Line 283

      Multiple Labels 284

      switch and if else 286

      The goto Statement 287

      Avoiding goto 287

      Key Concepts 291

      Summary 291

      Review Questions 292

      Programming Exercises 296

      8 Character Input/Output and Input Validation 299

      Single-Character I/O: getchar() and putchar() 300

      Buffers 301

      Terminating Keyboard Input 302

      Files, Streams, and Keyboard Input 303

      The End of File 304

      Redirection and Files 307

      Unix, Linux, and Windows Command Prompt Redirection 307

      Creating a Friendlier User Interface 312

      Working with Buffered Input 312

      Mixing Numeric and Character Input 314

      Input Validation 317

      Analyzing the Program 322

      The Input Stream and Numbers 323

      Menu Browsing 324

      Tasks 324

      Toward a Smoother Execution 325

      Mixing Character and Numeric Input 327

      Key Concepts 330

      Summary 331

      Review Questions 331

      Programming Exercises 332

      9 Functions 335

      Reviewing Functions 335

      Creating and Using a Simple Function 337

      Analyzing the Program 338

      Function Arguments 340

      Defining a Function with an Argument: Formal Parameters 342

      Prototyping a Function with Arguments 343

      Calling a Function with an Argument: Actual Arguments 343

      The Black-Box Viewpoint 345

      Returning a Value from a Function with return 345

      Function Types 348

      ANSI C Function Prototyping 349

      The Problem 350

      The ANSI C Solution 351

      No Arguments and Unspecified Arguments 352

      Hooray for Prototypes 353

      Recursion 353

      Recursion Revealed 354

      Recursion Fundamentals 355

      Tail Recursion 356

      Recursion and Reversal 358

      Recursion Pros and Cons 360

      Compiling Programs with Two or More Source Code Files 361

      Unix 362

      Linux 362

      DOS Command-Line Compilers 362

      Windows and Apple IDE Compilers 362

      Using Header Files 363

      Finding Addresses: The & Operator 367

      Altering Variables in the Calling Function 369

      Pointers: A First Look 371

      The Indirection Operator: * 371

      Declaring Pointers 372

      Using Pointers to Communicate Between Functions 373

      Key Concepts 378

      Summary 378

      Review Questions 379

      Programming Exercises 380

      10 Arrays and Pointers 383

      Arrays 383

      Initialization 384

      Designated Initializers (C99) 388

      Assigning Array Values 390

      Array Bounds 390

      Specifying an Array Size 392

      Multidimensional Arrays 393

      Initializing a Two-Dimensional Array 397

      More Dimensions 398

      Pointers and Arrays 398

      Functions, Arrays, and Pointers 401

      Using Pointer Parameters 404

      Comment: Pointers and Arrays 407

      Pointer Operations 407

      Protecting Array Contents 412

      Using const with Formal Parameters 413

      More About const 415

      Pointers and Multidimensional Arrays 417

      Pointers to Multidimensional Arrays 420

      Pointer Compatibility 421

      Functions and Multidimensional Arrays 423

      Variable-Length Arrays (VLAs) 427

      Compound Literals 431

      Key Concepts 434

      Summary 435

      Review Questions 436

      Programming Exercises 439

      11 Character Strings and String Functions 441

      Representing Strings and String I/O 441

      Defining Strings Within a Program 442

      Pointers and Strings 451

      String Input 453

      Creating Space 453

      The Unfortunate gets() Function 453

      The Alternatives to gets() 455

      The scanf() Function 462

      String Output 464

      The puts() Function 464

      The fputs() Function 465

      The printf() Function 466

      The Do-It-Yourself Option 466

      String Functions 469

      The strlen() Function 469

      The strcat() Function 471

      The strncat() Function 473

      The strcmp() Function 475

      The strcpy() and strncpy() Functions 482

      The sprintf() Function 487

      Other String Functions 489

      A String Example: Sorting Strings 491

      Sorting Pointers Instead of Strings 493

      The Selection Sort Algorithm 494

      The ctype.h Character Functions and Strings 495

      Command-Line Arguments 497

      Command-Line Arguments in Integrated Environments 500

      Command-Line Arguments with the Macintosh 500

      String-to-Number Conversions 500

      Key Concepts 504

      Summary 504

      Review Questions 505

      Programming Exercises 508

      12 Storage Classes, Linkage, and Memory Management 511

      Storage Classes 511

      Scope 513

      Linkage 515

      Storage Duration 516

      Automatic Variables 518

      Register Variables 522

      Static Variables with Block Scope 522

      Static Variables with External Linkage 524

      Static Variables with Internal Linkage 529

      Multiple Files 530

      Storage-Class Specifier Roundup 530

      Storage Classes and Functions 533

      Which Storage Class? 534

      A Random-Number Function and a Static Variable 534

      Roll 'Em 538

      Allocated Memory: malloc() and free() 543

      The Importance of free() 547

      The calloc() Function 548

      Dynamic Memory Allocation and Variable-Length Arrays 548

      Storage Classes and Dynamic Memory Allocation 549

      ANSI C Type Qualifiers 551

      The const Type Qualifier 552

      The volatile Type Qualifier 554

      The restrict Type Qualifier 555

      The _Atomic Type Qualifier (C11) 556

      New Places for Old Keywords 557

      Key Concepts 558

      Summary 558

      Review Questions 559

      Programming Exercises 561

      13 File Input/Output 565

      Communicating with Files 565

      What Is a File? 566

      The Text Mode and the Binary Mode 566

      Levels of I/O 568

      Standard Files 568

      Standard I/O 568

      Checking for Command-Line Arguments 569

      The fopen() Function 570

      The getc() and putc() Functions 572

      End-of-File 572

      The fclose() Function 57

      Recently viewed products

      © 2026 Book Curl

        • American Express
        • Apple Pay
        • Diners Club
        • Discover
        • Google Pay
        • Maestro
        • Mastercard
        • PayPal
        • Shop Pay
        • Union Pay
        • Visa

        Login

        Forgot your password?

        Don't have an account yet?
        Create account