A Comprehensive C Language Cheat Sheet for Quick Revision

A Comprehensive C Language Cheat Sheet for Quick Revision


Welcome to Code With Pritom! Whether you're a student gearing up for an exam or a professional needing a quick syntax refresher, this C language cheat sheet is designed to be your go-to resource. We'll cover everything from the fundamental building blocks to more advanced concepts in C programming.

Let's dive into the essential syntax and functions of the C language.


Basics

Basic syntax and functions from the C programming language.

Boilerplate Code

The fundamental structure of any C program.


#include<stdio.h> //header files
int main() //main function
{
    // Your code here
    return(0); //returning value to int main()
}

printf function

It is used to show output on the screen.


printf("Hello World!");

scanf function

It is used to take input from the user. We use & with the variable name to represent "address of".


scanf("format_specifier", &variables)

Here is how the syntax works:


int a;
scanf("%d",&a); // Store keyboard input in a variable with address (address of a or &a)
printf("%d",a);

Comments

A comment is a code that is not executed by the compiler, and the programmer uses it to annotate their code, providing explanations or reminders about the code's functionality, which aids in readability and future maintenance.

Single line comment

// This is a single line comment
Multi-line comment

/* This is a
   multi-line
   comment */

Data types

The data type defines the kind of data that can be stored in a variable, such as integers, floating-point numbers, characters, or more complex structures. It dictates how the data is stored, interpreted, and manipulated within the program.

Character type

The character type, often represented as a single octet (one byte), is used to store individual characters in the C programming language.


char variable_name;

The format specifier for a character in C is "%c". To print a character, we use this specifier within the printf function, following the syntax like this:


char x;
scanf("%c",&x);
printf("character is %c",x);

Integer type

To store non-decimal numeric values, an integer type is used.


int variable_name;

The format specifier of an integer is "%d".


int a;
scanf("%d",&a);
printf("%d",a);

Float type

To store decimal numeric values, float type is used.


float variable_name;

The format specifier of a float is "%f".


float b;
scanf("%f",&b);
printf("%f",b);

Double type

To store a double-precision floating-point value, we use double. The format specifier of double is "%lf".


double variable_name;

double ch;
scanf("%lf",&ch);
printf("%lf",ch);

Void type

The void type in C represents the absence of a type. It's often used in function declarations to specify that the function does not return any value. It can also be used for function parameters to indicate that a function takes no arguments.


void myFunction() {
    // Function code here
}

Escape Sequences

Escape sequences in C are combinations of characters that begin with a backslash (\) and are used to represent characters that cannot be typed directly. These sequences are interpreted in a special way when used inside string literals or character constants. For example, the escape sequence \n represents a newline character, and \t represents a tab character. Here are some escape sequence characters used in C language.

  • Alarm or Beep (\a): produces a beep sound.
  • 
    #include<stdio.h>
    int main()
    {
        printf("\a"); // It produces a beep sound
        return 0;
    }
        
  • Backspace (\b): adds a backspace.
  • 
    #include<stdio.h>
    int main()
    {
        printf("Hello\bWorld"); // It prints "HellWorld"
        return 0;
    }
        
  • Form feed (\f): It may create a page break.
  • 
    #include<stdio.h>
    int main()
    {
        printf("Page break here\fContinue text"); // It may create a page break, but it's not
        return 0;
    }
        
  • Newline (\n): Prints two lines.
  • 
    #include<stdio.h>
    int main()
    {
        printf("Line one\nLine two"); // Prints two lines
        return 0;
    }
        
  • Carriage return (\r): Resets the cursor position to the beginning of the current line, potentially overwriting previous text.
  • 
    #include<stdio.h>
    int main()
    {
        printf("Hello\rWorld"); // Outputs "World" but behavior might vary
        return 0;
    }
        
  • Tab (\t): It gives a tab space.
  • 
    #include<stdio.h>
    int main()
    {
        printf("Tabbed\ttext"); // Adds a tab space
        return 0;
    }
        
  • Backslash (\\): It adds a backslash.
  • 
    #include<stdio.h>
    int main()
    {
        printf("\\"); // Prints a backslash
        return 0;
    }
        
  • Single quote (\'): It adds a single quotation mark.
  • 
    #include<stdio.h>
    int main()
    {
        printf("\'"); // Prints a single quotation mark
        return 0;
    }
        
  • Question mark (\?): It adds a question mark.
  • 
    #include<stdio.h>
    int main()
    {
        printf("\?"); // Prints a question mark
        return 0;
    }
        
  • Octal No. (\101): It represents the value of an octal number.
  • 
    #include<stdio.h>
    int main()
    {
        printf("\101"); // Prints 'A', which is 101 in octal
        return 0;
    }
        
  • Hexadecimal No. (\x41): It represents the value of a hexadecimal number.
  • 
    #include<stdio.h>
    int main()
    {
        printf("\x41"); // Prints 'A', which is 41 in hexadecimal
        return 0;
    }
        
  • Null (\0): The null character is usually used to terminate a string.
  • 
    #include<stdio.h>
    int main()
    {
        char str[] = "Hello\0World"; // The null character is used to terminate a string
        printf("%s", str); // Will print "Hello"
        return 0;
    }
        

Conditional Instructions

Conditional statements are used to perform operations based on some condition.

If Statement


if (/* condition */)
{
    /* code */
}

If-else Statement


if (/* condition */)
{
    /* code */
}
else{
    /* Code */
}

if else-if Statement


if (condition) {
    // Statements;
}
else if (condition){
    // Statements;
}
else{
    // Statements
}

nested if-else


if (/* condition */) {
    if (/* condition */) {
        /* code */
    } else {
        /* Code */
    }
} else {
    /* Code */
}

Switch Case Statement

It allows a variable to be tested for equality against a list of values (cases).


switch (expression) {
    case constant-expression:
        statement1;
        statement2;
        break;
    case constant-expression:
        statement;
        break;
    // ...
    default:
        statement;
}

Iterative Statements

Iterative statements facilitate programmers to execute any block of code lines repeatedly and can be controlled as per conditions added by the programmer.

while Loop

It allows the execution of statements inside the block of the loop until the condition of the loop succeeds.


while (/* condition */)
{
    /* code */
}

do-while loop

It is an exit-controlled loop. It is very similar to the while loop with one difference, i.e., the body of the do-while loop is executed at least once even if the expression is false.


do
{
    /* code */
} while (/* condition */);

for loop

It is used to iterate the statements or a part of the program several times. It is frequently used to traverse the data structures like the array and linked list.


for (int i = 0; i < count; i++)
{
    /* code */
}

Break Statement

The break keyword inside the loop is used to terminate the loop.


#include <stdio.h>
int main() {
    for (int i = 0; i < 10; i++) {
        printf("Loop is breaking at i = 5\n");
        if (i == 5) {
            break; // Exit the loop when i is 5
        }
        printf("i = %d\n", i);
    }
    return 0;
}
/* Output:
Loop is breaking at i = 5
i = 0
i = 1
i = 2
i = 3
i = 4
*/

Continue Statement

The continue keyword skips the rest of the current iteration of the loop and returns to the starting point of the loop.


#include <stdio.h>
int main() {
    for (int i = 1; i <= 10; i++) {
        if (i % 2 == 0) {
            continue; // Skip the rest of the loop body if i is even
        }
        printf("%d ", i); // Print the odd numbers
    }
    return 0;
}
/* Output: 1 3 5 7 9 */

Functions & Recursion

Functions are used to divide an extensive program into smaller pieces. It can be called multiple times to provide reusability and modularity to the C program.

Function Definition


return_type function_name(data_type parameter...){
    //code to be executed
}

Function Call


function_name(parameters...);

return_type in functions

The function return statement returns the specified value or data item to the caller. If we do not want to return any value, simply place a void before the function name while defining it.


return_type function_name()
{
    return value;
}

Parameters in C function

Parameters are the values passed inside the parenthesis of the function while defining as well as while calling.


// Defining the functions with parameters
return_type function_name(data_type parameter...){
    //code to be executed
}

// Calling the functions with parameters
function_name(parameter...);

Ways of calling a function

  1. With return value and with parameters
  2. Without return value and with parameters
  3. With return value and without parameters
  4. Without return value and without parameters

Recursion

Recursion is when a function calls a copy of itself to work on a minor problem. And the function that calls itself is known as the Recursive function.


void recurse()
{
    // ... some code ...
    recurse(); // Recursive call
    // ... some code ...
}

Pointers

A pointer is a variable that contains the address of another variable.

Declaration


datatype *var_name;

We can allocate the address of the pointing variable to the pointer variable.


#include <stdio.h>
int main() {
    int *ptr, x;
    x = 15;
    ptr = &x; // Assign the address of x to ptr
    // This will print the address of x, not the value 15
    printf("%p", ptr);
    return 0;
}

Dereferencing pointer variable

Dereferencing a pointer means accessing the value stored at the address the pointer points to.


#include <stdio.h>
int main() {
    int *ptr, x;
    x = 12;
    ptr = &x; // Assign the address of x to ptr
    printf("%d", *ptr); // Dereference ptr to print the value of x
    return 0;
}

Arrays

An array is a collection of data items of the same type.

Declaration


data_type array_name[array_size];

#include<stdio.h>
int main()
{
    int arr[10]; // Declares an array of 10 integers
    return 0;
}

Accessing element

Elements are accessed using their index (starting from 0).


data_type variable_name = array[index];

Strings

A string is a 1-D character array terminated by a null character ('\0').

Declaration


char str_name[size];

gets() function

It allows you to enter a multi-word string.


gets("string");

puts() function

It is used to show string output.


puts("string");

fgets() function

The gets() function is considered unsafe, and it is better to use fgets() instead.


#include <stdio.h>
int main() {
    char str[50];
    printf("Enter a string: ");
    fgets(str, sizeof(str), stdin); // Reads a string safely
    printf("You entered: %s", str);
    return 0;
}

Remove new line for fgets() function

The fgets() function generate a newline


#include <stdio.h>
int main() {
    char str[50];
    printf("Enter a string: ");
    fgets(str, sizeof(str), stdin); // Reads a string safely 
    str[strcspn(str, "\n")] = 0; // remove newline
    strtok(str, "\n"); //or you can use that easily to remove new line      
    printf("You entered: %s", str);
    return 0;
}

String Functions

  • strlen() function: It is used to calculate the length of the string.
  • 
    strlen(string_name);
        
  • strcpy() function: It is used to copy the content of second-string into the first string passed to it.
  • 
    strcpy(destination, source);
        
  • strcat() function: It is used to concatenate two strings.
  • 
    strcat(first_string, second_string);
        
  • strcmp() function: It is used to compare two strings.
  • 
    strcmp(first_string, second_string);
        
  • strlwr() function: It is used to convert characters of strings into lowercase.
  • 
    strlwr(string_name);
        
  • strupr() function: It is used to convert characters of strings into uppercase.
  • 
    strupr(string_name);
        
  • strrev() function: It is used to reverse the string.
  • 
    strrev(string_name);
        

Structures

The structure is a collection of variables of different types under a single name. Defining a structure means creating a new data type.

Structure syntax


struct structureName
{
    dataType member1;
    dataType member2;
    // ...
};

typedef keyword

typedef function allows users to provide alternative names for the primitive and user-defined data types.


typedef struct structureName
{
    dataType member1;
    dataType member2;
    // ...
} new_name;

File Handling

A set of methods for handling File IO (read/write/append) in C language.

FILE pointer


FILE *filePointer;

Opening a file

It is used to open a file in C.


filePointer = fopen("fileName.txt", "w"); // "w" for write mode, "r" for read, "a" for append

fscanf() function

It is used to read the content of a file.


fscanf(FILE *stream, const char *format, ...);

fprintf() function

It is used to write content into the file.


fprintf(FILE *fptr, const char *str, ...);

fgetc() function

It reads a character from a file opened in read mode. It returns EOF on reaching the end of the file.


fgetc (FILE *pointer);

fputc() function

It writes a character to a file opened in write mode.


fputc(char, FILE *pointer);

Closing a file

It closes the file.


fclose(filePointer);

Dynamic Memory Allocation

A set of functions for dynamic memory allocation from the heap. These methods are used to use the dynamic memory which makes our C programs more efficient.

malloc() function

Stands for 'Memory allocation' and reserves a block of memory with the given amount of bytes.


ptr = (castType*) malloc( ..value.. * sizeof(..data_type..) );

calloc() function

Stands for 'Contiguous allocation' and reserves n blocks of memory with the given amount of bytes.


ptr = (castType*)calloc(n, size);

free function

It is used to free the allocated memory.


free(ptr);

realloc() function

If the allocated memory is insufficient, then we can change the size of previously allocated memory using this function for efficiency purposes.


ptr = realloc(ptr, x);

I hope the provided information covers what you need. I tried to cover almost all the important topics of C. If you'd like to download my handwritten notes, please visit Code With Harry's Notes. For your convenience, a link to download this cheatsheet as a PDF is provided below:

Download this Cheatsheet as PDF

Comments