This hands-on self-paced intermediate level C programming course complements our previous C course (or Introduction to C programming language). In our previous course, we covered a comprehensive introduction to the ANSI C language, emphasizing portability and structured design while students were introduced to all major language elements including fundamental data types, flow control, and standard function libraries. as well as other topics like string and character manipulation, dynamic memory allocation, standard I/O, macro definition, the C runtime library, and pointers.

In this course, we continue our journey by covering the Structured programming constructs, the use of aggregate structures, unions and varargs functions. Emphasis is given to the processing of command line arguments and environment variables so students will be able to write flexible, user-friendly programs. The course also includes coverage of portability tips drawn from experienced programmers working in production environments. Comprehensive hands-on exercises are integrated throughout to reinforce learning and develop real competency.

Learning Objectives

In this course, you will learn the following:

  • Using standard runtime libraries
  • Using make to build programs
  • Returning the value of a function
  • Declaring argument data types
  • ANSI function prototype syntax
  • Using Strings and character manipulation
  • Declaring and instancing a structure
  • Defining a union
  • Accessing command line arguments and environment variables
  • C runtime library standard I/O functions

Topics and Subtopics

The following topics and subtopics are covered in this course:

1- Functions (Subroutines)

  • Purpose of Functions
  • Functions vs. Inlining
  • Automatic Variables
  • The Argument Stack
  • Passing By Value
  • Passing By Reference
  • Declaring External Functions
  • Function Prototyping
  • ANSI Prototyping
  • The _NO_PROTO Compiler Symbol
  • Varargs Functions
  • Passing a Function as an Argument
  • Designing Functions for Reusability
  • Calling a Function from Another Language
  • Returning a Dynamically Allocated Value Using Double Indirection
  • Casting the Return Value of a Function
  • Recursion and Reentrancy

2- Structures

  • Purpose of Structures
  • Defining and Declaring Structures
  • Accessing Members
  • Pointers to Structures
  • Dynamic Memory Allocation
  • Passing a Structure to a Function
  • As a Pointer
  • Passing the Actual Structure

3- Advanced Structures and Unions

  • Nested Structures
  • Arrays of Structures
  • Bit Fields
  • Unions
  • Linked Lists

4- C Runtime Library Standard Functions

  • Character I/O
  • Unformatted File I/O
  • Formatted File I/O
  • Math Functions
  • Miscellaneous Functions

5- Strings and Character Manipulation

  • Strings as Character Arrays
  • String Library Functions
  • Reading and Writing Strings

6- Accessing Command Line Arguments and Environment Symbols

  • argc and argv
  • Parsing Command Line Options
  • Accessing the Environment Array

7- Structured Programming

  • Structuring Code for Quality, Reliability, Maintainability
  • Designing for Modularity and Reusability

8- Advanced Programming Consideration

  • Writing Portable Code
  • Use of Macros
  • ANSI C Limits
  • Feature Test Macros
  • Client/Server Design
  • Performance Considerations


Introduction to C programming language.

Related Courses

Complete Training Bundle

If you are serious about becoming a pro software engineer, you should enroll in our Complete Training Bundle for Software Engineers class, This bundle covers all essential and practical topics related to software design and development. For $290 monthly subscription, you can have access to 300+ hours of hands-on project-based training covering all courses related to software development like Python, Java, Kotlin, C/C++ Go and more. Click here to learn more.

Private Tutoring Classes

To take skills you learn from this course to the next level, taking the following tutoring classes are highly recommended. It is also a great opportunity to discuss your questions and problems related to this course with an experienced instructor:

What Is Next?

After finishing this course, you can enroll in any of following classes:

Recommended Free Courses

If you are new to the IT or programming, we suggest the following free courses:

Choose a Pricing Option


One time payment

2 payments of $59/m

Pay in 2 months

4 payments of $39/m

Pay in 4 months