# The C Guide

> Learn C programming from scratch: variables, pointers, arrays, strings, structures, and the preprocessor. A guided path through the C tutorials on this site.

Author: Flavio Copes | Published: 2026-07-14 | Canonical: https://flaviocopes.com/c/

C is one of the most influential programming languages ever created.

It powers operating systems, databases, embedded devices, and the interpreters and runtimes of most other languages. Learn C and you understand how software actually talks to memory and hardware.

C is also remarkably stable. The language you learn today is essentially the language that has run the world for decades. That makes these tutorials solid ground: the fundamentals don't move.

This page is your map to the C content on this site, organized as a learning path.

## Where to start

Follow these in order and you'll cover the core of the language:

- [Introduction to the C Programming Language](https://flaviocopes.com/c-introduction/) sets the stage, with your first program
- [C Variables and types](https://flaviocopes.com/c-variables-types/) covers how data is stored
- [C Operators](https://flaviocopes.com/c-operators/) for math, comparison, and logic
- [C Conditionals](https://flaviocopes.com/c-conditionals/) with `if` and `switch`
- [How to work with loops in C](https://flaviocopes.com/c-loops/) covers `for`, `while`, and `do while`
- [Introduction to C Functions](https://flaviocopes.com/c-functions/) to organize your code
- [Introduction to C Pointers](https://flaviocopes.com/c-pointers/) is the topic that defines C. Take your time here.

## Arrays and strings

In C, strings are arrays of characters, so these two topics go together:

- [Introduction to C Arrays](https://flaviocopes.com/c-arrays/)
- [How to determine the length of an array in C](https://flaviocopes.com/c-array-length/)
- [Looping through an array with C](https://flaviocopes.com/c-loop-array/)
- [Introduction to C Strings](https://flaviocopes.com/c-strings/)
- [How to find the length of a string in C](https://flaviocopes.com/c-string-length/)
- [How to return a string from a C function](https://flaviocopes.com/c-return-string/)
- [Double quotes vs single quotes in C](https://flaviocopes.com/c-quotes/)
- [How to check a character value in C](https://flaviocopes.com/c-check-char-value/)

## Types, scope, and structure

Once you're comfortable with the basics, these round out your understanding of how C programs are built:

- [C Constants](https://flaviocopes.com/c-constants/)
- [Booleans in C](https://flaviocopes.com/c-boolean/)
- [How to use NULL in C](https://flaviocopes.com/c-null/)
- [C Enumerated Types](https://flaviocopes.com/c-enums/)
- [C Structures](https://flaviocopes.com/c-structures/)
- [The typedef keyword in C](https://flaviocopes.com/c-typedef/)
- [Scope of variables in C](https://flaviocopes.com/c-variables-scope/)
- [C Global Variables](https://flaviocopes.com/c-global-variables/)
- [Static variables in C](https://flaviocopes.com/c-static-variables/)
- [Can you nest functions in C?](https://flaviocopes.com/c-nesting-functions/)

## Input, output, and the toolchain

C programs talk to the outside world through standard I/O, and the preprocessor and header files hold everything together:

- [Basic I/O concepts in C](https://flaviocopes.com/c-input-output/)
- [C conversion specifiers and modifiers](https://flaviocopes.com/c-conversion-specifiers/)
- [Print the percentage character with printf() in C](https://flaviocopes.com/c-print-percentage/)
- [How to access the command line parameters in C](https://flaviocopes.com/c-parameters-command-line/)
- [C Header Files](https://flaviocopes.com/c-header-files/)
- [The C Preprocessor](https://flaviocopes.com/c-preprocessor/)
- [Fix the C 'implicitly declaring library function' warning](https://flaviocopes.com/c-error-implicit-declare-library-function/)

## Go deeper

I collected all of this material, expanded and organized, in the free [C Handbook](https://flaviocopes.com/ebooks/c-handbook/). You can download it as PDF or EPUB and read it offline, cover to cover.

All posts on this topic are in the [C tag archive](https://flaviocopes.com/tags/clang/).
