This course introduced me to C programming and helped me grow to the point where I agreed that C is fun
The repository holds most of the C projects that I did while training to become a fullstack software engineer in the fully funded ALX SWE program.
The table below gives a brief summary of all the projects; you may click on any of them to see the content of the particular project.
| Project Title | Brief Description |
|---|---|
| C - Hello World | This put to test my knowledge of c compilation stages and processes, bash scripting, and environment variables. Here, I learned how to use certain operators (such as sizeof) and standard library functions (such as; printf, puts & putchar) in c. And more... |
| C - Variables, if, else, while | The project gave me an understanding of datatypes, variables, conditional statements and while loop in c. I also learned about arithematic, logical, relational and boolen operators; I experienced the use of ASCII values as well |
| C - Functions, Nested loops | Here, I learned how to use nested loops, the scope of variables, header files, prototypes, function declaration and function definition in c |
| C - Debugging | The project was about how to read errors and manually get bugs out of the codes |
| C - More functions, Nested loops | All about writing some user define functions, saving the prototypes in the main.h file and testing them in some main.c files |
| C - Pointers arrays strings - 0 | About pointers, arrays, strings and how to manipulate them |
| C - Pointers arrays strings - 1 | Here, I was made to write more user defined functions and to emulate some standard library functions defined in strings.h |
| C - Pointers arrays strings - 2 | This was about pointers to pointers, multidimensional arrays, and emulating common standard library functions used to manipulate strings |
| C - Recursion | About recursive functions in c, how to use them, when to use them, and when not to use them |
| C - Static libraries | The meaning, function, making and usage of static libraries in c; understanding what ar, ranlib and nm do and how they are used |
| C - argc argv | The project was about writing programs that arguments could be passed to on the command line while running them. |
| C - Malloc, free | About dynamic memory allocation (malloc) and freeing the dynamically allocated memory, and how to check for memory leaks with valgrind |
| C - More malloc, free | This project introduced the exit, calloc, realloc (standard library) functions and how they are used |
| C - Preprocessor | About common predefined and user defined macros and how to use them; and the essence of include guard in header files |
| C - Structures, typedef | The project was about using struct and typedef to create a data structure and non-existing datatype that is made up of some primitive datatypes. If you wish to learn about struct, I simplified it here |
| C - Function pointers | About pointers that hold the address of funtions and serve as access points of the functions |
| C - Variadic functions | Writing c functions that take variable number of arguments each time they're called; knowing the use of va_arg, va_start, va_end and const |
| C - Singly linked list | About linking up nodes which take the form of structs that are connected to one another in an orderly manner, following convention |
| C - More singly linked list | How to use singly linked list |
| C - Bit manipulation | How to manipulate bits and use bitwise operators |
| C - File I/O | About how to use system calls, such as; open, close, read and write to interact with the kernel and how to use the flags — O_RDONLY, O_WRONLY, O_RDWR |
| C - Doubly linked list | A more complex form of singly linked list |
| C - Dynamic libraries | The meaning, function, making and usage of dynamic libraries in c; understanding what nm, ldd and ldconfig do and how they are used; knowing the use of the environment variable $LD_LIBRARY_PATH and how to use it |
| C - Hash tables | About hash functions and hash tables, what collisions are and the common ways to handle them |
| C - Makefile | Writing own Makefile and running it with the make utility on a Linux machine |