Menu

Intermediate C Programming

Overview

This course continues the students’ study of the C programming language using the C99 standard.  The core C language features covered in this course include functions, arrays, strings, pointers, dynamic memory allocation, library functions, structures, and file I/O.  Programming techniques covered by this course include modularity, top-down design, documentation, debugging, and testing.

Topic Include:
  • Review of Basic C
  • Program and Data Structure Design
  • Function documentation
  • Formatted Input/Output
  • Advanced Structures
  • Function macros
  • Integer representation
  • Bitwise operators
  • Pointers to Structures and Linked Lists
  • Dynamic memory allocation and related topics
  • Pointers to Pointers and Dynamic multi-dimensional Arrays
  • Unsigned data types
  • Pointers to Functions
  • Searching and Sorting an Array
  • Pointer arithmetic
  • Advanced Sequential File I/O
  • Debugging Techniques
  • Separate compilation
  • Makefiles and the make utility
  • Miscellaneous C Features
  • Common C Bugs

This course is for programmers who have had experience in any programming language or have been tasked with a C programming project, and other technical types including managers and customer support engineers who need to know C.

Students should have completed our ’Introduction to C Programming’ course or have equivalent knowledge of the C programming language.

Upon completion of this course, students will be able to:

  • Write C programs that are non-trivial.
  • Use the variety of data types appropriate to specific programming problems.
  • Utilize the modular features of the language.
  • Demonstrate efficiency and readability.
  • Demonstrate the use of the various control flow constructs.
  • Use arrays as part of the software solution.
  • Utilize pointers to efficiently solve problems.
  • Include the structure data type as part of the solution.
  • Create their own data types. Use functions from the portable C library.

Chapter 1: Getting Started

  • What is C?
  • Background
  • Sample Program
  • Components of a C Program
  • Examples
  • Data Types
  • Variables
  • Naming Conventions for C Variables
  • Printing and Initializing Variables
  • Array Examples
  • Compiling and Executing a C Program

Chapter 2: Functions and Operators

  • Functions
  • Invoking Functions
  • Elementary Operators
  • The Assignment Operators
  • Number of Operands
  • The Conditional Operator
  • Increment and Decrement Operators

Chapter 3: Control Flow Constructs

  • Examples of Expressions
  • Endless Loops

Chapter 4: The C Preprocessor

  • Preprocessor Macros
  • Conditional Compilation

Chapter 5: Simple I/O

  • Character I/O
  • End of File
  • Simple I/O Examples
  • Simple I/O Redirection
  • I/O with Character Arrays

Chapter 6: More on Functions

  • Introduction
  • Function Declarations
  • Returning a Value or Not
  • Function Prototypes
  • Arguments and Parameters
  • Organization of C Source Files
  • Extended Example
  • The getaline Function
  • The strcmp Function
  • The check Function
  • The atoi Function
  • The average Function
  • Summary

Chapter 7: Bit Manipulation

  • Defining the Problem Space
  • A Programming Example
  • Bit Wise Operators
  • Bit Manipulation Functions
  • Circular Shifts

Chapter 8: Strings

  • Fundamental Concepts
  • Aggregate Operations
  • String Functions
  • String Functions Example

Chapter 9: Higher Dimensional Arrays

  • Array Dimensions
  • An Array as an Argument to a Function
  • Two-Dimensional Array Example
  • String Arrays

Chapter 10: Separate Compilation

  • Compiling Over Several Files
  • Function Scope
  • File Scope
  • Program Scope
  • Local static
  • Object Files
  • Libraries
  • The C Loader
  • Header Files

Chapter 11: Pointers (Part 1)

  • Fundamental Concepts
  • Pointer Operators and Operations
  • Changing an Argument with a Function Call
  • Pointer Arithmetic
  • Array Traversal
  • String Functions with Pointers
  • Pointer Difference
  • Prototypes for String Functions
  • Relationship Between an Array and a Pointer
  • The Pointer Notation *p++

Chapter 12: Pointers (Part 2)

  • Dynamic Storage Allocation – malloc
  • Functions Returning a Pointer
  • Initialization of Pointers
  • An Array of Character Pointers
  • Two Dimensional Arrays vs. Array of Pointers
  • Command Line Arguments
  • Pointers to Pointers
  • Practice with Pointers
  • Function Pointers

Chapter 13: Structures

  • Fundamental Concepts
  • Describing a Structure
  • Creating Structures
  • Operations on Structures
  • Functions Returning Structures
  • Passing Structures to Functions
  • Pointers to Structures
  • Array of Structures
  • Functions Returning a Pointer to a Structure

Chapter 14: Structure Related Items

  • Bit Fields
  • Non-Homogeneous Arrays
  • Enumerations

Chapter 15: File I/O

  • System Calls vs. Library Calls
  • Opening Disk Files
  • I/O Library Functions
  • Copying a File
  • Character Input vs. Line Input
  • Servicing Errors – errno.h

Chapter 16: Information About Files

  • The stat Function
  • File Existence
  • Telling Time – time and ctime
  • Telling Time – localtime

Chapter 17: I/O With Structures

  • A Database Application
  • The menu Function
  • The create_db Function
  • The print_db Function
  • The retrieve_db Function
  • The Utility Functions

Appendix A: C Language Programming

  • Important Header Files
  • printf Formats
  • C Reserved Words
  • Conversion
  • Precedence Chart

Appendix B: Useful Library Functions

  • Math Functions
  • Character Testing Functions
  • Binary Search – bsearch
SLI Main Menu