This C Project was done during Full Stack Software Engineering studies at ALX school.
Why C programming is awesome
Who invented C
Who are Dennis Ritchie, Brian Kernighan and Linus Torvalds
What happens when you type gcc main.c
What is an entry point
What is main
How to print text using printf, puts and putchar
How to get the size of a specific type using the unary operator sizeof
How to compile using gcc
What is the default program name when compiling with gcc
What is the official C coding style and how to check your code with betty-style
How to find the right header to include in your source code when using a standard library function
How does the main function influence the return value of the program
What are the arithmetic operators and how to use them
What are the logical operators (sometimes called boolean operators) and how to use them
What the relational operators and how to use them
What values are considered TRUE and FALSE in C
What are the boolean operators and how to use them
How to use the if, if ... else statements
How to use comments
How to declare variables of types char, int, unsigned int
How to assign values to variables
How to print the values of variables of type char, int, unsigned int with printf
How to use the while loop
How to use variables with the while loop
How to print variables using printf
What is the ASCII character set
What is the purpose of the gcc flags -m32 and -m64
What are nested loops and how to use them
What is a function and how do you use functions
What is the difference between a declaration and a definition of a function
What is a prototype
Scope of variables
What are the gcc flags -Wall -Werror -pedantic -Wextra -std=gnu89
What are header files and how to to use them with #include
What is debugging
What are some methods of debugging manually
How to read the error messages
What are pointers and how to use them
What are arrays and how to use them
What are the differences between pointers and arrays
How to use strings and how to manipulate them
Scope of variables
What are pointers to pointers and how to use them
What are multidimensional arrays and how to use them
What are the most common C standard library functions to manipulate strings
What is recursion
How to implement recursion
In what situations you should implement recursion
In what situations you shouldn’t implement recursion
What is a static library, how does it work, how to create one, and how to use it
Basic usage of ar, ranlib, nm
How to use arguments passed to your program
What are two prototypes of main that you know of, and in which case do you use one or the other
How to use attribute((unused)) or (void) to compile functions with unused variables or parameters
What is the difference between automatic and dynamic allocation
What is malloc and free and how to use them
Why and when use malloc
How to use valgrind to check for memory leak
How to use the exit function
What are the functions calloc and realloc from the standard library and how to use them
What are macros and how to use them
What are the most common predefined macros
How to include guard your header files
What are structures, when, why and how to use them
How to use typedef
What are function pointers and how to use them
What does a function pointer exactly hold
Where does a function pointer point to in the virtual memory
What are variadic functions
How to use va_start, va_arg and va_end macros
Why and how to use the const type qualifier
When and why using linked lists vs arrays
How to build and use linked lists
How to manipulate bits and use bitwise operators
How to create, open, close, read and write files
What are file descriptors
What are the 3 standard file descriptors, what are their purpose and what are their POSIX names
How to use the I/O system calls open, close, read and write
What are and how to use the flags O_RDONLY, O_WRONLY, O_RDWR
What are file permissions, and how to set them when creating a file with the open system call
What is a system call
What is the difference between a function and a system call
What is a doubly linked list
How to use doubly linked lists
What is a dynamic library, how does it work, how to create one, and how to use it
What is the environment variable $LD_LIBRARY_PATH and how to use it
What are the differences between static and shared libraries
Basic usage nm, ldd, ldconfig
What is a hash function
What makes a good hash function
What is a hash table, how do they work and how to use them
What is a collision and what are the main ways of dealing with collisions in the context of a hash table
What are the advantages and drawbacks of using hash tables
What are the most common use cases of hash tables