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 compilationstages and processes,bash scripting, andenvironment variables. Here, I learned how to use certain operators (such assizeof) and standard library functions (such as;printf,puts&putchar) inc. And more... | 
| C - Variables, if, else, while | The project gave me an understanding of datatypes,variables, conditional statements andwhile loopinc. I also learned about arithematic, logical, relational and boolen operators; I experienced the use ofASCIIvalues 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.hfile and testing them in somemain.cfiles | 
| C - Pointers arrays strings - 0 | About pointers,arrays,stringsand how to manipulate them | 
| C - Pointers arrays strings - 1 | Here, I was made to write more user defined functionsand to emulate some standard library functions defined instrings.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 functionsinc, 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 whatar,ranlibandnmdo 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) andfreeing the dynamically allocated memory, and how to check for memory leaks withvalgrind | 
| 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 macrosand how to use them; and the essence ofinclude guardin header files | 
| C - Structures, typedef | The project was about using structandtypedefto 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 cfunctions that take variable number of arguments each time they're called; knowing the use ofva_arg,va_start,va_endandconst | 
| 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,readandwriteto 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 whatnm,lddandldconfigdo and how they are used; knowing the use of the environment variable$LD_LIBRARY_PATHand how to use it | 
| C - Hash tables | About hash functionsandhash tables, what collisions are and the common ways to handle them | 
| C - Makefile | Writing own Makefile and running it with the makeutility on a Linux machine |