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 free ing 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 |